2010-04-13 88 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;