这是我无法相信我无法弄清楚的事情 - 请告诉我,我错过了一些简单的事情......
我有一个数据网格,我用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}
答案 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)
我不确定具体发生了什么,但需要考虑......
您在什么时候修改列?如果为时已晚,可能需要反弹到网格,导致重绘。通常当我改变某些东西并且我在屏幕上看不到它的效果时,这是由于绑定顺序。