【问题标题】:Which controls are bound to my dataset?哪些控件绑定到我的数据集?
【发布时间】:2010-12-23 05:13:36
【问题描述】:

给定一个 DataSet 实例,有什么方法可以找出哪些控件绑定到它的表?

我想停止绑定到 DataSet 的所有内容,例如:

foreach (Control cont in dataset.ControlsBoundToMe)
{
    if (cont is DataGrid)
    {
        (cont as DataGrid).DataSource = null;
    }
}

谢谢

【问题讨论】:

    标签: c# winforms data-binding dataset


    【解决方案1】:

    好吧,我假设您说的是 Winforms 控件。

    然后,在每个表单上,您都可以访问BindingContext 属性,这将为您提供来自特定数据源的绑定管理器。拥有此管理器后,您可以访问其绑定集合并对其进行迭代。

    伪代码:

    var bindingManager = BindingContext[myDataSet.Tables[0]];
    foreach (Binding binding in bindingManager.Bindings)
    {
        var dataGrid = binding.Control as DataGrid;
        if (dataGrid != null)
            dataGrid.DataSource = null;
    } 
    

    【讨论】:

    • 我正在使用 Winforms。问题是我无法访问表单...这发生在数据访问层中,所以我的班级中只有数据集。
    • 所以恐怕你不能这样做,除非你手动实现某种跟踪系统......
    • 我必须实施跟踪系统。谢谢。