LINQ2SQL - 将结果绑定到网格 - 希望在不重新绑定的情况下反映更改?

时间:2010-04-02 18:04:37

标签: c# linq-to-sql data-binding winforms

我有一个绑定到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: 重新绑定网格是有效的,但我的问题是......即使是正确的做事方式也是如此?我觉得自己距离正确的轨道很远。

2 个答案:

答案 0 :(得分:1)

我自己没有尝试过,但Bindable LINQ允许实现它。

答案 1 :(得分:1)

当您考虑webforms中的数据绑定如何工作时,调用数据绑定实际上是正确的方法。在数据绑定到对象的所有示例中,只要修改了集合,就会发生对数据绑定的调用。

感觉错误的原因是因为使用DataSourceControl更加清晰,例如LinqDataSourceControlObjectDataSourceControl,其中所有内容都是为您处理的。

在使用LinqDataSourceControl时,可能有助于您使用{{1}}的两件事情,您可能需要覆盖各种方法(选择,插入,删除)等,以便添加额外的过滤和逻辑。

另一件令人想到的事情是http://multitierlinqtosql.codeplex.com/。特别是关于Custom ObjectDataSource的部分。