2011-05-26 100 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