【问题标题】:LINQ2SQL - Binding result to a grid - want changes to be reflected without re-binding?LINQ2SQL - 将结果绑定到网格 - 想要在不重新绑定的情况下反映更改?
【发布时间】:2011-02-03 19:52:59
【问题描述】:

我有一个绑定到 LINQ to SQL Entity 属性的网格(DevExpress XtraGrid,如果有的话)。

gridItems.DataSource = purchaseOrder.PendingItemsGrouped;

好吧,网格正在正确显示,我可以看到待处理的购买项目。 当purchaseOrder.PendingItemsGrouped 发生更改时,就会出现问题......一旦发生这种情况,网格就不会反映更改。

具体流程如下: 用户从网格中选择一行,在特定文本框中插入一个序列号,然后按 Enter 键,有效地从采购订单中接收该项目,并将其插入库存。

inventoryWorker.AddItemToStock( userSelectedItem, serialNumber );

该项目已正确插入到库存中,但网格仍显示该项目,就好像它仍在等待接收一样。

我该如何解决这个问题? 我是否真的需要重新绑定网格以反映更改?

我什至尝试过:

gridItems.DataSource = ...;

这个:

gridItems.DataBindings.Add( new Binding( "DataSource", purchase, "PendingItemsGrouped" ) );

但无法解决问题。 非常感谢您的宝贵时间,

艾萨克。

OBS: 重新绑定网格有效,但我的问题是......这甚至是正确的做事方式吗?我觉得我偏离了正确的轨道。

【问题讨论】:

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


    【解决方案1】:

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

    感觉不对的原因是因为使用DataSourceControl 更简洁,例如LinqDataSourceControlObjectDataSourceControl,所有这些东西都是为你处理的。

    在此路径上可能对您有所帮助的两件事是,在使用 LinqDataSourceControl 时,您可能需要覆盖各种 -ing 方法(选择、插入、删除)等,以添加额外的过滤和逻辑。

    另一个想到的是http://multitierlinqtosql.codeplex.com/。尤其是自定义 ObjectDataSource 部分。

    【讨论】:

    • 感谢您的完整回答。我很感激。
    【解决方案2】:

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

    【讨论】:

    • 感谢您的回答 - 这是否意味着除了使用 Bindable LINQ 之外没有其他办法吗?谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    相关资源
    最近更新 更多