2013-10-29 25 views
1

您好,我有一個問題想的LINQ to XML ...如何創建一個linq到xml查詢綁定xml DropDownList與我的結構?

我有標題值的XML文件:

我的xml:

<?xml version="1.0" encoding="utf-8"?> 

<Titles> 
    <values id="de"> 
    <value value="Herr" display="Herr"></value> 
    <value value="Frau" display="Frau"></value> 
    </values> 
    <values id="cs"> 
    <value value="Herr" display="Pan"></value> 
    <value value="Frau" display="Paní"></value> 
    </values> 
    <values id="en"> 
    <value value="Herr" display="Mr."></value> 
    <value value="Frau" display="Mrs."></value> 
    </values> 
    <values id="es"> 
    <value value="Herr" display="Sr."></value> 
    <value value="Frau" display="Sra."></value> 
    </values> 
    <values id="zh"> 
    <value value="Herr" display="先生"></value> 
    <value value="Frau" display="女士"></value> 
    </values> 
</Titles> 

,我有一個DropDownList:

<td><asp:DropDownList ID="drp_GuestListViewAddDialog_GuestTitle" runat="server"></asp:DropDownList></td> 

這是我的C#代碼:

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

       string data = (from item in x.Elements("Titles").Elements("values") where item.Attribute("id").Value == "de" select item.Attribute("display").Value).First(); 

UPDATE:

例如,如果我想要的ID = 「DE」 我想這

<values id="de"> 
    <value value="Herr" display="Herr"></value> 
    <value value="Frau" display="Frau"></value> 
    </values> 
+0

什麼是你想在你的下拉列表中的'value'和'text'?你需要一個'IEnumerable'作爲你的數據源,但是你正在選擇一個字符串。 –

+0

與來自「值」的「id」我想過濾和價值我想要的「價值」和「顯示」屬性從DropDownList:DataValueField和DataTextField設置屬性。 – Tarasov

回答

1

編輯:這個作品...

var x = XDocument.Load(@"~\App_Data\DropDown\Title.xml"); 
var list = x.Descendants("values") 
    .Where(el => el.Attribute("id").Value == "de") 
    .Descendants("value") 
    .Select(el => new 
    { 
     value = el.Attribute("value").Value, 
     display = el.Attribute("display").Value 
    ) 
    .ToList(); 

drp_GuestListViewAddDialog_GuestTitle.DataValueField = "value"; 
drp_GuestListViewAddDialog_GuestTitle.DataTextField = "display"; 
drp_GuestListViewAddDialog_GuestTitle.DataSource = list; 
drp_GuestListViewAddDialog_GuestTitle.DataBind(); 
1
var results = doc.Descendants("values") 
     .Where(e => (string)e.Attribute("id") == "zh") 
     .SelectMany(e => e.Elements("value")) 
     .Select(v => new { Value = v.Attribute("value").Value, Text = v.Attribute("display").Value }) 
     .ToList(); 

然後將其綁定:

drp_GuestListViewAddDialog_GuestTitle.Enabled = true; 
drp_GuestListViewAddDialog_GuestTitle.DataSource = result; 
drp_GuestListViewAddDialog_GuestTitle.DataBind(); 

對不起,我無法查看它是否編譯,我在這裏轉發。