【问题标题】:Populate combobox from XML in XmlReader in C#在 C# 中的 XmlReader 中从 XML 填充组合框
【发布时间】:2014-09-10 07:51:45
【问题描述】:

我必须阅读 XML 并在 C# 中填充组合框。这是我尝试过的:

private class Item 
{
  public string Name;
  public int Id

  public Item(string name, int id) 
  {
      Name = name; 
      Id = id;
  }
}   

这是我的 XmlReader 代码:

if (reader.IsStartElement())
{
    //return only when you have START tag
    switch (reader.Name.ToString())
    {
        case "Ad_Ref":
            Console.WriteLine("Name of the Element is : " + reader.ReadString());
            break;

        case "Ad_Id":
            Console.WriteLine("Your Id is : " + reader.ReadString());
            break;
    }
}

我怎么能这样做comboBox1.Items.Add(new Item("Student 1", 1));

我的 XML 只有两个标签,一个是 Ad_Id,另一个是 Ad_Ref

更新:这里是 XML 示例

<Listings>
 <Listing>
  <Ad_Id>1</Ad_Id>
 <Ad_Ref>admin</Ad_Ref>
  </Listing>
 </Listings>

【问题讨论】:

  • 你能分享一下xml文件是什么
  • 为什么要将值写入控制台?
  • 这只是为了知道我正在获取值...请忽略它并填充组合框
  • 创建一个List&lt;Item&gt;并将其与ComboBox绑定。
  • 问题是如何读取 XML 以及如何获取 First 和 Second 值???

标签: c# xml combobox xmlreader


【解决方案1】:

如果您选择XmlReader,您可以这样做:

XmlReader.ReadToFollowing用于读取兄弟元素节点。

var lstItems = new List<Item>();
using(XmlReader reader = XmlReader.Create("test.xml"))
{
    while (reader.Read())
    {
        if (reader.NodeType == XmlNodeType.Element)

            if (reader.Name == "Ad_Id")
            {
                reader.Read();
                string sAd_ID = reader.Value;
                string sAd_Ref = string.Empty;

                if (reader.ReadToFollowing("Ad_Ref"))
                {
                     reader.Read();
                     sAd_Ref = reader.Value;
                }

                 if(!string.IsNullOrEmpty(sAd_ID) && sAd_Ref != string.Empty)                        
                     lstItems.Add(new Item(sAd_Ref, Convert.ToInt32(sAd_ID)));
            }
     }
 }

您可以将List&lt;Item&gt; 填充为上面的lstItems 并将其与ComboBox 绑定。

comboBox1.DataSource = lstItems;
comboBox1.DisplayMember="Name";
comboBox1.ValueMember="Id";    

更新

将类的访问修饰符更改为public并添加属性gettersetter

public class Item
{
    public string Name { get; set; }
    public int Id { get; set; }

    public Item(string name, int id)
    {
        Name = name;
        Id = id;
    }
}

【讨论】:

  • 仅在此行“comboBox1.ValueMember="Id"”上给我错误“无法绑定到新的显示成员”
  • 答案已更新。这是因为您没有提到 get 和 set 属性。
猜你喜欢
  • 2015-05-23
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多