我有一个绑定到LINQ to SQL Entity属性的网格(DevExpress XtraGrid,如果这很重要)。
gridItems.DataSource = purchaseOrder.PendingItemsGrouped;
好吧,网格显示正常,我可以看到待处理的购买项目。 当purchaseOrder.PendingItemsGrouped发生变化时会出现问题......一旦发生这种情况,网格就不会反映变化。
具体程序如下: 用户从网格中选择一行,在特定文本框中插入序列号,然后点击输入从采购订单中有效接收此项目,并将其插入库存。
inventoryWorker.AddItemToStock( userSelectedItem, serialNumber );
该项目已正确插入库存,但网格仍显示该项目,好像它仍在等待接收它。
我该如何解决这个问题? 我真的是否需要重新绑定网格以便反映更改?
我甚至试过而不是:
gridItems.DataSource = ...;
此:
gridItems.DataBindings.Add( new Binding( "DataSource", purchase, "PendingItemsGrouped" ) );
但无法解决问题。 非常感谢你的时间,
艾萨克。
OBS: 重新绑定网格是有效的,但我的问题是......即使是正确的做事方式也是如此?我觉得自己距离正确的轨道很远。
答案 0 :(得分:1)
我自己没有尝试过,但Bindable LINQ允许实现它。
答案 1 :(得分:1)
当您考虑webforms中的数据绑定如何工作时,调用数据绑定实际上是正确的方法。在数据绑定到对象的所有示例中,只要修改了集合,就会发生对数据绑定的调用。
感觉错误的原因是因为使用DataSourceControl
更加清晰,例如LinqDataSourceControl
或ObjectDataSourceControl
,其中所有内容都是为您处理的。
在使用LinqDataSourceControl
时,可能有助于您使用{{1}}的两件事情,您可能需要覆盖各种方法(选择,插入,删除)等,以便添加额外的过滤和逻辑。
另一件令人想到的事情是http://multitierlinqtosql.codeplex.com/。特别是关于Custom ObjectDataSource的部分。