我在做一个简单的项目。我有Windows窗体,当窗体打开时,我希望带有3列的“Userslistview”填充我的XML中的数据,该数据也是由程序创建的。
我尝试了几种方法,但listview只是保持空白。 所以这是使用
的加载事件代码 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。 但是listview仍然是空的
答案 0 :(得分:0)
首先确保您的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());
}
}
答案 1 :(得分:0)
您可以使用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);