2010-04-13 64 views
1

使用c#.net,windows窗體應用程序。我有一個XML文件,其中包含兩列和一些數據行。現在我必須將這些數據填充到數據網格視圖中。即時通訊使用按鈕,當我點擊按鈕打開對話框將出現。我必須選擇XML文件名,當我點擊打開該XML文件的內容應該來到數據網格視圖。我曾嘗試使用下面的代碼:將xml文件的內容讀入數據網格視圖

{ 
XmlDataDocument xmlDatadoc=new XmlDataDocument(); 
XmlDatadoc.Dataset.ReadXml(filename); 
ds=xmlDatadoc.Dataset; 
datagridview1.DataSource=ds.DefaultViewManager; 
datagridview1.Datamember="language"; 
} 

我的XML文件是:

<languages> 
<language> 
    <key> key1</key> 
<value>value1</value> 
</language> 

<language> 
    <key> key2</key> 
<value>value2</value> 
</language> 
</languages> 

其工作正常,但僅適用於 「語言」。我需要它工作文件其他XML文件也。

+1

編輯以修復收盤語言標記。 – MusiGenesis 2010-04-13 12:26:38

回答

0

這一個很簡單:如果你想用不同的XML文件中使用此,使用不同的Datamember屬性,像這樣:

datagridview1.Datamember="taxes"; // or whatever 

如果你希望你的DataGridView以神奇地知道哪些元素在你的XML中用於行,你運氣不好。

0

你好,我這是例如,XML必須以正確的格式,如果需要,它很容易正確的代碼,這只是觀點的主要依據:

 XElement xElement = XElement.Load("file.xml"); 
     DataTable dTable = new DataTable(); 
     // keys must have unique name 
     xElement.Elements().First().Elements().ToList() 
      .ForEach(element=>dTable.Columns.Add(element.Name.ToString())); 

     xElement.Elements().ToList().ForEach((item) => 
      { 
       // fileds must place in the same order 
       // but you can correct it if you want 
       var itemToAdd = new List<string>(); 

       item.Elements().ToList().ForEach(field => itemToAdd.Add(field.Value)); 
       dTable.Rows.Add(itemToAdd.ToArray()); 
      } 
     ); 

     dataGridView1.DataSource = dTable;