2010-06-11 5 views
2

J'ai un asp: RadioButtonList et je veux lier déclarativement la valeur à une énumération. J'ai essayé en utilisant cette syntaxe de type:Comment définir asp: listitem à une valeur d'énumération de manière déclarative?

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

Je reçois un élément de liste d'erreurs ne prend pas en charge la liaison de données. Des idées?

+0

Êtes-vous essayer d'obtenir un bouton radio pour chaque valeur dans votre ENUM? – cptScarlet

+0

@cptScarlet J'essaye de placer la valeur de listitem à la valeur mon énumération pour chacune de mes valeurs d'énumération en utilisant la syntaxe déclarative. Cette dernière partie est ce qui le rend délicat. –

Répondre

1

Essentiellement, vous ne pouvez pas faire exactement ce que vous voulez. En effet, Asp: Listitem ne contient pas l'événement Databinding. Le RadioButtonList lui-même supporte cependant cela.

Alors voici le plus proche que je pourrais venir à ce que vous vouliez.

Voici le code HTML

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

Voici le code derrière

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

Je itère à travers l'énumération plutôt que de se lier.

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); 
} 
+0

Ceci n'est pas déclaratif. Merci quand même. –

Questions connexes