Объединяет два поля в выпадающем списке asp.net - PullRequest
0 голосов
/ 02 мая 2011

Мне нужно создать выпадающий список, объединяющий два поля из 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 голосов
/ 02 мая 2011

Вы можете добавить событие предварительного рендеринга в элемент управления и изменить его там.

<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;
    }
}

Это один из способов сделать это, но могут быть и другие лучшие способы перед связыванием списка.

0 голосов
/ 07 января 2013

<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>

Проверьте ** ** детали.

0 голосов
/ 02 мая 2011

Возможно, вы могли бы использовать LINQ to XML. Что-то вроде (не проверено)

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