[英]C# Fill Listview with data from XML
我正在做一个简单的项目。 我有 Windows 窗体,当窗体打开时,我希望我的“Userslistview”包含 3 列,其中包含来自我的 XML 的数据,该数据也是由程序创建的。
我尝试了几种方法,但列表视图只是空的。 所以这是我使用的 Load 事件代码
private void MainMenu_Load(object sender, EventArgs e)
{
string xmlfile = AppDomain.CurrentDomain.BaseDirectory + "Users.xml";
if (!File.Exists(xmlfile))
{
return;
}
UserslistView.View = View.Details;
UserslistView.GridLines = true;
UserslistView.Sorting = SortOrder.Descending;
UserslistView.FullRowSelect = true;
UserslistView.Columns.Add("Active", 80);
UserslistView.Columns.Add("username", 120);
UserslistView.Columns.Add("Last Logon", 120);
UserslistView.Items.Clear();
DataSet ds = new DataSet();
ds.ReadXml(xmlfile);
ListViewItem item;
foreach (DataRow dr in ds.Tables["user"].Rows)
{
item = new ListViewItem(new string[]
{
dr["username"].ToString(),
dr["USERID"].ToString(),
dr["lastlogon"].ToString()
});
UserslistView.Items.Add(item);
}
}
and here's the XMl im using
我为此交换了我的代码。
private void MainMenu_Load(object sender, EventArgs e)
{
UserslistView.View = View.Details;
UserslistView.GridLines = true;
UserslistView.FullRowSelect = true;
UserslistView.Columns.Add("Active", 100);
UserslistView.Columns.Add("username", 120);
//UserslistView.Columns.Add("Last Logon", 100);
string xmlfile = AppDomain.CurrentDomain.BaseDirectory + "Users.xml";
XmlDocument doc = new XmlDocument();
try
{
doc.Load(xmlfile);
foreach (XmlNode n in doc.SelectNodes("/Users//user"))
{
ListViewItem li = new ListViewItem(n.SelectSingleNode("username").InnerText);
li.SubItems.Add(n.SelectSingleNode("lastlogon").InnerText);
UserslistView.Items.Add(li);
}
}
catch { }
}
该节点的计数为 2。但列表视图仍然为空
首先确保您的 xml 在您的项目中可用。 我按照这个例子: How to add an xml file as a resource to Windows Forms exe
using System;
using System.Data;
using System.Linq;
using System.Windows.Forms;
using System.Xml.Linq;
private void MainMenu_Load(object sender, EventArgs e)
{
UserslistView.View = View.Details;
UserslistView.GridLines = true;
UserslistView.Sorting = SortOrder.Descending;
UserslistView.Columns.Add("Active", 80);
UserslistView.Columns.Add("username", 120);
UserslistView.Columns.Add("Last Logon", 120);
UserslistView.Items.Clear();
var doc = XDocument.Parse(Properties.Resources.Users);
var output = from x in doc.Root.Elements("user")
select new ListViewItem(new []
{
x.Element("USERID").Value,
x.Element("username").Value,
x.Element("lastlogon").Value
});
UserslistView.Items.AddRange(output.ToArray());
}
}
您可以使用XDocument
并解析您的Xml
XDocument doc = XDocument.Load(file path);
var nodes = doc.Descendants("user").Select(e=> new ListViewItem( new [] {
e.Element("username").Value,
e.Element("USERID").Value,
//e.Element("password").Value,
e.Element("lastlogon").Value
})).ToArray();
UserslistView.Items.AddRange(nodes);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.