我有一个DataTable,它有一个名为[Invalid]的布尔列。我需要将此数据除以此无效列 - 有效行可以编辑,无效行不能。我最初的计划是使用两个BindingSources并设置Filter属性(例如[Invalid] ='false'),由于我有两个DataGridViews,因此我可以直接进入我的手中,所以我还需要两个BindingSources。
这不起作用:BindingSources设置与DataTable关联的Filter属性,因此两个BindingSource都保存相同的数据。我是否必须从数据库中取两次,或者我可以用我拥有的对象做我想做的事情?
答案 0 :(得分:5)
我认为你不能像你希望的那样去做。
您可以使用同一数据表的两个不同的数据视图,并将您的数据网格绑定到那些?
答案 1 :(得分:5)
绑定到DataTable时,您实际上是绑定到其默认视图(DataTable.DefaultView)。当您设置BindingSource的Filter属性时,您将设置默认视图的Filter属性,覆盖其他BindingSource设置的Filter。
所以deadcat's answer is correct:您需要绑定到DataTable上的两个不同视图(如果您愿意,其中一个视图可以是DefaultView):
bindingSource1.DataSource = myDataTable;
bindingSource2.DataSource = new DataView(myDataTable);
或
bindingSource1.DataSource = new DataView(myDataTable);
bindingSource2.DataSource = new DataView(myDataTable);