Как установить ASP: ListItem к значению перечисления, декларивно?

StackOverflow https://stackoverflow.com/questions/3025065

Вопрос

У меня есть ASP: RadioButtonList и желаю, чтобы привязать значение для перечисления. Я пытался использовать этот синтаксис этого типа:

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

Я получаю элемент списка ошибок, не поддерживает databinding. Любые идеи?

Это было полезно?

Решение

По сути, вы не можете сделать именно то, что вы хотите. Это связано с тем, что ASP: listiTem не содержит события databinding. Сам радиообуклюнтилист поддерживает это, однако.

Так вот ближе всего я мог прийти к тому, что ты хотел.

Вот 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

Другие советы

Я повторяю через enum, а не привязывание.

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);
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top