2009-12-04 32 views
1

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

我想停止一切绑定到数据集,这样的:

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

感谢

回答

2

嗯,我认为你是在谈论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; 
} 
+0

我使用的WinForms。问题是我没有访问表单...这是发生在数据访问层,所以我只有我的班级数据集。 – 2009-12-04 12:19:30

+0

所以我怕你不能这样做,除非你手动实现某种跟踪系统... – 2009-12-04 13:33:47

+0

我不得不实施跟踪系统。谢谢。 – 2009-12-07 14:49:25