Как установить ASP: ListItem к значению перечисления, декларивно?
-
26-09-2019 - |
Вопрос
У меня есть 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);
}
Не связан с StackOverflow