Home All Groups Group Topic Archive Search About

Discrepancy in DataGridView column order & databound DataTable

Author
25 Jul 2006 4:58 PM
Mike
Dear group,

I'm currrently investigating a bug within a piece of our software whereby if
a DataGridView (bound directly to a DataTable) is ordered by column headers
(containing lookup combo boxes where the value is the foreign key of another
table), although the DataGridView is ok, the DataTable becomes out of sync.

In other words, I have a Grid of customers, and if a customer name column
header is clicked - the data moves in the DataGridView, but previous data is
still held for the original row positions in the DataTable.

This throws off row calculations quite considerably, and is a particularly
fustrating bug to debug.

Any ideas are most welcome, and thanks in advance for any advice.

Regards,

Mike

Author
26 Jul 2006 2:08 AM
Ken Tucker [MVP]
Mike,

        The datagridview is actually bound to the datatable's defaultview.
That will have the records in the right order.

Ken
----------------------------
Show quote
"Mike" <none> wrote in message news:uvbGZuAsGHA.4004@TK2MSFTNGP02.phx.gbl...
> Dear group,
>
> I'm currrently investigating a bug within a piece of our software whereby
> if a DataGridView (bound directly to a DataTable) is ordered by column
> headers (containing lookup combo boxes where the value is the foreign key
> of another table), although the DataGridView is ok, the DataTable becomes
> out of sync.
>
> In other words, I have a Grid of customers, and if a customer name column
> header is clicked - the data moves in the DataGridView, but previous data
> is still held for the original row positions in the DataTable.
>
> This throws off row calculations quite considerably, and is a particularly
> fustrating bug to debug.
>
> Any ideas are most welcome, and thanks in advance for any advice.
>
> Regards,
>
> Mike
>
Author
26 Jul 2006 1:10 PM
Brian Tkatch
Ken Tucker [MVP] wrote:
Show quote
> Mike,
>
>         The datagridview is actually bound to the datatable's defaultview.
> That will have the records in the right order.
>
> Ken
> ----------------------------
> "Mike" <none> wrote in message news:uvbGZuAsGHA.4004@TK2MSFTNGP02.phx.gbl...
> > Dear group,
> >
> > I'm currrently investigating a bug within a piece of our software whereby
> > if a DataGridView (bound directly to a DataTable) is ordered by column
> > headers (containing lookup combo boxes where the value is the foreign key
> > of another table), although the DataGridView is ok, the DataTable becomes
> > out of sync.
> >
> > In other words, I have a Grid of customers, and if a customer name column
> > header is clicked - the data moves in the DataGridView, but previous data
> > is still held for the original row positions in the DataTable.
> >
> > This throws off row calculations quite considerably, and is a particularly
> > fustrating bug to debug.
> >
> > Any ideas are most welcome, and thanks in advance for any advice.
> >
> > Regards,
> >
> > Mike
> >

Wow, thanx, that clears something up for me too.

BTW, a way to simply test this would be to add a DataGridView, three
textboxes and a button. Then the following code:

    Dim table As New DataTable

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load

        Dim row As DataRow

        table.Columns.Add()

        row = table.NewRow
        table.Rows.Add(row)
        row(0) = "A"

        row = table.NewRow
        table.Rows.Add(row)
        row(0) = "B"

        DataGridView1.DataSource = table

    End Sub


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
        TextBox1.Text = DataGridView1.Item(0, 0).Value.ToString
        TextBox2.Text = table.Rows(0)(0).ToString
        TextBox3.Text = table.DefaultView.Item(0)(0).ToString
    End Sub

B.
Author
27 Jul 2006 4:38 PM
Mike
"Brian Tkatch" <Maxwell_Sm***@ThePentagon.com> wrote in message
news:1153919429.516152.4290@m79g2000cwm.googlegroups.com...
>
> Ken Tucker [MVP] wrote:
>> Mike,
>>
>>         The datagridview is actually bound to the datatable's
>> defaultview.
>> That will have the records in the right order.

Ahhh, thank you. I think that will solve it.

Show quote
>> ----------------------------
>> "Mike" <none> wrote in message
>> news:uvbGZuAsGHA.4004@TK2MSFTNGP02.phx.gbl...
>> > Dear group,
>> >
>> > I'm currrently investigating a bug within a piece of our software
>> > whereby
>> > if a DataGridView (bound directly to a DataTable) is ordered by column
>> > headers (containing lookup combo boxes where the value is the foreign
>> > key
>> > of another table), although the DataGridView is ok, the DataTable
>> > becomes
>> > out of sync.
>> >
>> > In other words, I have a Grid of customers, and if a customer name
>> > column
>> > header is clicked - the data moves in the DataGridView, but previous
>> > data
>> > is still held for the original row positions in the DataTable.
>> >
>> > This throws off row calculations quite considerably, and is a
>> > particularly
>> > fustrating bug to debug.
>> >
>> > Any ideas are most welcome, and thanks in advance for any advice.
>> >
>> > Regards,
>> >
>> > Mike
>> >
>
> Wow, thanx, that clears something up for me too.

>    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles Button1.Click
>        TextBox1.Text = DataGridView1.Item(0, 0).Value.ToString
>        TextBox2.Text = table.Rows(0)(0).ToString
>        TextBox3.Text = table.DefaultView.Item(0)(0).ToString
>    End Sub

^ Great example too. I'll have to do some recoding tonight. If any MSDN
article authors are reading this; this has got to be somewhere that a LOT of
people trip up on, but very little example documentation alludes to using
the .DefaultView.

Thanks!

Mike

AddThis Social Bookmark Button