4

asp:RadioButtonListがあり、値を列挙型に宣言的にバインドしたいと思います。このタイプの構文を使用してみました:

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

エラーリストアイテムがデータバインディングをサポートしていないというメッセージが表示されます。何か案は?

4

2 に答える 2

1

基本的に、やりたいことを正確に行うことはできません。これは、Asp:Listitemにデータバインディングイベントが含まれていないためです。ただし、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
于 2010-06-14T18:46:12.667 に答える
0

バインドするのではなく、列挙型を繰り返し処理します。

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);
}
于 2010-06-11T18:42:42.147 に答える