2012-01-20 33 views
0

我試圖綁定XML數據DROPDOWNLIST綁定XML數據到一個下拉列表C#

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> 

查詢到的數據提取到一個列表項:

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

這不會產生任何結果。請指教。

在此先感謝

BB

+1

你必須這樣做嗎?難道你不能只是創建一個數據集,並使用數據集來讀取XML文件,並最終綁定數據集到下拉列表中,你就完成了。 – Standage

回答

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(); 
2

把你的XML文件中App_Data或程序的任何地方和MapPath
指定其路徑並在最後一行中分配第一個XML列的名稱。

這裏我使用的是「代碼」,因爲它是我的第一個XML列,國家是我想在我的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)); 
    } 
}