我是C#和.NET的初学者,遇到以下问题(使用.NET 4.5):

我有三个DataGridViews,它们应该显示xml文件中的数据。每个DataGrid应该过滤其结果,因此它们的xml条目分布在三个DataGridViews中。

我尝试了以下方法:

DataSet dataSet1 = new DataSet();
dataSet1.ReadXml('some-existing-file.xml');

DataTableCollection tables = dataSet1.Tables;
DataView view1 = new DataView(tables[0]);

BindingSource source1 = new BindingSource();
source1.DataSource = view1;
source1.Filter = "color = 'red'";
gridView1.DataSource = source1;

BindingSource source2 = new BindingSource();
source2.DataSource = view1;
source2.Filter = "color = 'white'";
gridView2.DataSource = source2;

BindingSource source3 = new BindingSource();
source3.DataSource = view1;
source3.Filter = "color = 'blue'";
gridView3.DataSource = source3;


但这是行不通的。所有三个GridView使用最后一个过滤器(“蓝色”)。

XML看起来像这样(简化):

<?xml version="1.0" encoding="utf-8"?>
<collection>
    <entry>
        <color>blue</color>
        <headline>Some headline</headline>
    </entry>
    [...]
</collection>


当我想将更改写回到xml文件时,只是过滤相同的数据集是正确的方法吗?

最佳答案

以三个视图为例,因为我认为所有三个过滤器都应用于视图,并且您得到的输出显示了最后一个过滤器的结果。如果可行,您以后可以对其进行改进

DataView view1 = new DataView(tables[0]);
DataView view2 = new DataView(tables[0]);
DataView view3 = new DataView(tables[0]);


BindingSource source1 = new BindingSource();
source1.DataSource = view1;
source1.Filter = "color = 'red'";
gridView1.DataSource = source1;

BindingSource source2 = new BindingSource();
source2.DataSource = view2;
source2.Filter = "color = 'white'";
gridView2.DataSource = source2;

BindingSource source3 = new BindingSource();
source3.DataSource = view3;
source3.Filter = "color = 'blue'";
gridView3.DataSource = source3;

关于c# - 如何对多个DataGridView使用相同的DataSource,并对每个DataGridView应用不同的过滤器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10189630/

10-09 04:06