我有一个DataTable,它有一个名为[Invalid]的布尔列.我需要将此数据除以此无效列 - 有效行可以编辑,无效行不能.我原来的计划是使用两个BindingSources并设置Filter属性([无效] ="假",例如),发挥了送到我的手上,因为我有两个DataGridViews,所以我需要两个BindingSources反正.
这不起作用:BindingSources设置与DataTable关联的Filter属性,因此两个BindingSource都保存相同的数据.我将不得不从数据库中取两次,或者我可以用我拥有的对象做我想做的事情吗?
我不认为你可以按照你希望的方式去做.
您可以使用同一数据表的两个不同的数据视图,并将您的datagridviews绑定到那些?
绑定到DataTable时,您实际上绑定到其默认视图(DataTable.DefaultView).当您设置BindingSource的Filter属性时,您将设置默认视图的Filter属性,覆盖其他BindingSource设置的Filter.
所以deadcat的答案是正确的:你需要绑定到DataTable上的两个不同的视图(如果你愿意,其中一个可以是DefaultView):
bindingSource1.DataSource = myDataTable; bindingSource2.DataSource = new DataView(myDataTable);
要么
bindingSource1.DataSource = new DataView(myDataTable); bindingSource2.DataSource = new DataView(myDataTable);