将XML数据绑定到下拉列表c#

时间:2012-01-20 22:49:51

标签: c# xml linq drop-down-menu

我正在尝试将XML数据绑定到Dropdownlist

 XElement xDoc = XElement.Parse(QContent.OuterXml);

这是我的xDoc包含的内容

<root xmlns="">
       <item value="-1" text="Select" />
       <item value="1" text="$30,000" />
       <item value="2" text="$50,000" />
    </root>

查询将数据提取到Listitem中:

 var query = from xEle in xDoc.Descendants("root")
               select new ListItem(xEle.Attribute("value").Value , xEle.Attribute("text").Value);

这没有结果。请指教。

提前致谢

BB

2 个答案:

答案 0 :(得分:2)

您可以将LINQ查询更改为以下内容,该查询将返回root下的所有节点,并返回包含您尝试绑定的值/文本对的新项目。

var query = from xEle in xDoc.Descendants()
select new {value = xEle.Attribute("value").Value , text = xEle.Attribute("text").Value};

然后按如下方式设置绑定,包括将查询折叠到列表中。

ddlList.DataValueField = "value";
ddlList.DataTextField = "text";
ddlList.DataSource = query.ToList();
ddlList.DataBind();

答案 1 :(得分:2)

将您的XML文件放在App_Data内或程序中的任何位置以及MapPath中 分配其路径,并在最后一行中指定第一个XML列的名称。

这里我使用的是“代码”,因为它是我的第一个XML列,country是我要在dropdownlist中显示的列的名称。

private void BindCountry()
{
    XmlDocument doc = new XmlDocument();
    doc.Load(Server.MapPath("~//App_Data//countries.xml"));

    foreach (XmlNode node in doc.SelectNodes("//country"))
    {
        ddlcountry.Items.Add(new ListItem(node.InnerText, node.Attributes["code"].InnerText));
    }
}