结合asp.net下拉列表中的两个字段

时间:2011-05-01 22:14:53

标签: asp.net html xml data-binding drop-down-menu

我需要制作一个下拉列表,结合xml文件中的两个字段......

XML文件:

<?xml version="1.0" encoding="utf-8" ?>
<exchangeRates>
<rate country="aud" >0.97</rate>
<rate country="usd" >1.01</rate>
</exchangeRates>

我需要下拉列表来显示国家/地区和费率

aud    0.97
usd    1.01

这样的东西
SELECT country + rate AS NewColumn FROM XML above

And then use NewColumn for the DataValueFIeld:

<asp:DropDownList ID="DropDownList1" runat="server" 
DataSourceID="SqlDBSrc" DataTextField="NAME" DataValueField="NewColumn"
>

<asp:XmlDataSource ID="ListItems" runat="server" DataFile="~/ExchangeRates.xml">
</asp:XmlDataSource>

如何在asp.net中正确执行此操作?

3 个答案:

答案 0 :(得分:0)

您可以使用LINQ to XML。  像(未经测试)的东西

dim selectList = (from x in xmldoc
                select new SelectListItem { Text = x.Attribute("country") + ' '+ x.Value, Value = x.Id });

答案 1 :(得分:0)

您可以向控件添加预渲染事件并在那里修改控件

<asp:DropDownList ID="DropDownList1" runat="server" onprerender="DropDownList1_PreRender"
DataSourceID="SqlDBSrc" DataTextField="Country" DataValueField="Value"
>

注意:调整DataText和DataValue字段以填充未修改的数据。

在你的代码中,这会修改:

protected void DropDownList1_PreRender(object sender, EventArgs e)
{
    foreach (ListItem item in DropDownList1.Items)
    {
        item.Text = item.Text + " " + item.Value;
    }
}

这是一种方法,但在绑定列表之前可能还有其他更好的方法。

答案 2 :(得分:0)

<asp:DropDownList ID="DropDownList9" runat="server" DataSourceID="SqlDataSource3" DataTextField="**CALL_NAMESURNAME**" DataValueField="CALL_NAME"> </asp:DropDownList> <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:McCarthyConnectionString %>" SelectCommand="SELECT [CALL_NAME], [SURNAME],**CALL_NAME + SURNAME AS [CALL_NAMESURNAME]** FROM [Sheet1$] where COY_NAME LIKE '%abc%'"> </asp:SqlDataSource>

检查** **部分。