0

您好我想在 ASP.NET 的 DropDownList 中包含我的 XDocument 对象。

我的 ASPX:

<asp:DropDownList ID="drpLogLocation" runat="server" AutoPostBack=true onselectedindexchanged="drpLogLocation_SelectedIndexChanged">

我的 C# 代码:

XDocument x = XDocument.Load(Server.MapPath(@"~\App_Data\location.xml"));



                   x.Root.Descendants()
                                     .Where(e => !ActiveUserList.Contains((string)e.Attribute("group")))
                                     .ToList()
                                     .ForEach(s => s.Remove());


                   drpLogLocation.DataSource = x;// ?????????????
                   drpLogLocation.DataBind();

这是我的 XML 结构:

<plants>
  <plant id="DB" display="Dill" group="NPS_DB" />
  <plant id="SB" display="Süd" group="NPS_SB" />
</plants>

我想要我的 DropDownList DataTextField="display" 和 DataValueField="id"。我怎么能做到这一点

4

2 回答 2

1

您可以从 XMLDocument 获取 DataSet 并像这样设置下拉列表

  string xml = @"<plants>  <plant id='DB' display='Dill' group='NPS_DB' />  <plant id='SB' display='Süd' group='NPS_SB' /></plants>";

        DataSet ds = new DataSet();
        ds.ReadXml(XmlReader.Create(new StringReader(xml)));
        ddlList.DataValueField = "DB";
        ddlList.DataTextField = "Dill";
        ddlList.DataSource = ds.Tables[0];
        ddlList.DataBind();

或者

XmlDataDocument doc = new XmlDataDocument();
doc.LoadXml(@"Yourxmlfile.xml");
DataSet ds = doc.DataSet;
于 2013-10-14T07:07:51.457 回答
1
XDocument xDoc = XDocument.Load(@"Yourxmlfile.xml");
        var query = from xEle in xDoc.Descendants("publication")
                    select new ListItem(xEle.Element("name").Value, xEle.Attribute("tcmid").Value);

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

*改用 Linq 会是更好的解决方案 *

于 2013-10-14T06:39:52.923 回答