我使用c#.net,windows表单应用程序。我有一个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文件。
答案 0 :(得分:0)
这个非常简单:如果要将其与不同的XML文件一起使用,请使用不同的Datamember
属性,如下所示:
datagridview1.Datamember="taxes"; // or whatever
如果你期望你的DataGridView
以某种方式神奇地知道你的XML中哪些元素用于行,那你就不走运了。
答案 1 :(得分: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;