Как декларативно установить asp: listitem в значение перечисления? - PullRequest
3 голосов
/ 11 июня 2010

У меня есть asp: RadioButtonList и я хочу декларативно привязать значение к перечислению.Я попытался использовать синтаксис этого типа:

value = <%# ((int)MyEnum.Value).ToString() %>"

Я получаю элемент списка ошибок, не поддерживающий привязку данныхЕсть идеи?

Ответы [ 2 ]

1 голос
/ 14 июня 2010

По сути, вы не можете делать именно то, что вы хотите.Это потому, что Asp: Listitem не содержит событие Databinding.Однако сам RadioButtonList поддерживает это.

Итак, вот самое близкое, что я мог бы найти к тому, что вы хотели.

Вот HTML

<asp:RadioButtonList runat="server" ID="rbl" DataSource='<%# EnumValues %>' DataValueField='Value'  DataTextField='Key' />

Вот кодпозади

 Public Enum values As Integer
    first = 1
    second = 2
    third = 3
    fourth = 4
    fifth = 5

End Enum

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Page.DataBind()
End Sub

Public ReadOnly Property EnumValues() As System.Collections.Generic.Dictionary(Of String, String)
    Get


        Dim val As values

        Dim names As Array
        Dim values As Array


        Dim stuff As Dictionary(Of String, String) = New Dictionary(Of String, String)

        names = val.GetNames(val.GetType)
        values = val.GetValues(val.GetType)

        build the final results
        For i As Integer = 0 To names.Length - 1
            stuff.Add(names(i), values(i))
        Next

        Return stuff

    End Get
End Property
0 голосов
/ 11 июня 2010

Я перебираю перечисление, а не связывание.

Array itemValues = System.Enum.GetValues(typeof(Response));
Array itemNames = System.Enum.GetNames(typeof(Response));

for (int i = 0; i <= itemNames.Length - 1 ; i++) {
    ListItem item = new ListItem(itemNames(i), itemValues(i));
    radioButtonList1.Items.Add(item);
}
...