繁体   English   中英

C# 用 XML 中的数据填充 Listview

[英]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

在此处输入图片说明

更新 1

我为此交换了我的代码。

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 x​​ml 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM