【问题标题】:Binding XML to Combobox将 XML 绑定到组合框
【发布时间】:2011-01-18 07:20:46
【问题描述】:

在尝试将 XML 绑定到 Combobox 数据源时,我收到错误消息“Complex DataBinding 接受 IList 或 IListSource 作为数据源。” p>

 XDocument obj = XDocument.Load("Managers.xml");

 comboBox1.DisplayMember = "ManagerDesig";
 comboBox1.ValueMember = "ManagerID";
 comboBox1.DataSource = obj.Descendants("manager").Select(x => new
 {
   ManagerDesig = x.Attribute("desig").Value,
   ManagerID = x.Attribute("id").Value
 });

Managers.xml

<managers>
  <manager id="123" desig="CEO" />
  <manager id="234" desig="CFO" />
  <manager id="456" desig="CIO" />
</managers>

请帮忙

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    尝试:

     comboBox1.DataSource = obj.Descendants("manager").Select(x => new
     {
       ManagerDesig = x.Attribute("name").Value,
       ManagerID = x.Attribute("id").Value
     })
    .ToList();//convert to list
    

    【讨论】:

      【解决方案2】:

      首先,您的示例中有一个错字:您正在检索“name”属性,而只定义了“id”和“design”属性。

      其次,使用ToList扩展方法如下:

      comboBox1.DataSource = obj.Descendants("manager").Select(x => new
      {
          ManagerDesig = x.Attribute("name").Value,
          ManagerID = x.Attribute("id").Value
      }).ToList();
      

      【讨论】:

      • 嗨,volpav,实际上这是我的错误。我编辑了问题,而 TheVillageIdiot 正在发布解决方案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-08
      • 2016-08-23
      • 2014-03-16
      相关资源
      最近更新 更多