更改datagrid列的顺序或索引

时间:2009-05-09 20:11:20

标签: vb.net linq datagridview anonymous-types

这是我无法相信我无法弄清楚的事情 - 请告诉我,我错过了一些简单的事情......

我有一个数据网格,我用LINQ填充它以及一个自定义类来向它添加数据。

之后,我需要按特定顺序排列数据 - 它似乎忽略了我。

如何更改列属性,如索引等?

这是我正在使用的LINQ代码:

提前感谢...

 Dim query = From m In db.details _
                Where m.InboundDate >= CType(MonthCalendar1.SelectionStart, DateTime) _
                And m.InboundDate <= CType(MonthCalendar1.SelectionEnd, DateTime).AddHours(23).AddMinutes(59) _
                And m.ClientNo = 1 _
                  Join md In db.Manifests On md.ManifestID Equals m.MainID _
                Select New GridData With {.manifestID = m.MainID, .InboundDate = m.InboundDate, .Zip = m.Zip, .LadingPkgQty = md.LadingPkgQty, .Weight = m.Weight, .Zone = m.Zone, .Fuel = 23, .LineHaul = Nothing, .Freight = Nothing, .BilledAmount = Nothing, .PackageRate = Nothing, .LTL = Nothing}

3 个答案:

答案 0 :(得分:10)

解决

我无法相信为了找到这个我需要花费多少东西!

现在看起来太明显了(事后就像.net一样!)

Datagrid.Columns("Zone").DisplayIndex = 0

Datagrid.columns(1).DisplayIndex=0

答案 1 :(得分:2)

您所看到的是VB在Visual Studio 2008 RTM中如何生成匿名类型的效果。编译器将按字母顺序对属性进行排序。因此,无论您指定的顺序如何,如果数据绑定查询,列将按字母顺序显示。

在Visual Studio 2008 SP1中,VB编译器进行了更改以解决此问题。现在,匿名类型将以与在代码中指定它们相同的方式生成匿名类型成员。如果升级到VS2008 SP1,您应该会看到此行为的更改。

有关该主题的详细文章

答案 2 :(得分:1)

我不确定具体发生了什么,但需要考虑......

您在什么时候修改列?如果为时已晚,可能需要反弹到网格,导致重绘。通常当我改变某些东西并且我在屏幕上看不到它的效果时,这是由于绑定顺序。