2011-05-26 45 views
1

我有一个代码,可以将xml文件读入数据集,然后在datagridview中显示数据。
我做了一些谷歌搜索,我发现我的数据集读取的XML,但只在第一个“水平”的元素。C#使用数据集将复杂类型的xml文件读取到datagridview中

对于复杂类型,它没有达到足够的程度。但是,它可以将复杂类型或“内嵌”数据保存到数据集的下一个表格中。 xml文件全部在一个数据集中,但根据元素的复杂类型将表分开。

是否有任何方法将表组合成一个大表,以便我不需要有一个数字上下值来在表视图之间切换?

对于我的程序,我试图让用户更容易操作这些XML文件。有一张大桌子比一堆小桌子好得多。

下面是代码:

string filename = Address.Text; 
    dataGridView1.AutoGenerateColumns = true; 
    DataSet dataSet1 = new DataSet("DEFAULT"); 
    dataSet1.ReadXml(filename, XmlReadMode.Auto); 
    bindingSource1.DataSource = dataSet1.Tables[(int)tablenumber.value].DefaultView; 
    dataGridView1.DataSource = bindingSource1; 
    richTextBox1.Text = filename + " loaded."; 
    label2.Text = "File Open: " + filename; 

等,但tablenumber是0,开始了。这只是数据集在读入xml文件时所具有的“第一个”表。另外,我确实有一个与xml文件一起使用的模式。我是否还需要读取模式,以便知道存在复杂类型并根据模式读取数据?

(.NET 3.5 SP1,Visual Studio 2008的C#)

回答

1

这个问题是通过使用用于循环通过每个表数据集中的重复和合并它解决。这产生了一个适合datagridview的更大的数据表,不管模式如何。有预期的空单元,但这正是我想要的:一个巨大的数据表。

DataTable dt = new DataTable(); 
    dt = dataSet1.Tables[0]; 
    int i; 
    for(i = 1; i < dataSet1.Tables.Count; i++) 
    { 
     dt.Merge(dataSet.Tables[i]); 
    } 

是我使用的代码。 =)

编辑:更多信息(限制,例子)Table Merge