2011-01-18 2 views
1

Je dois savoir comment faire ce que l'utilisateur ferait intuitivement s'il fonctionnait (imaginez useGreek() et useNato() pour être des états qui seraient consultés une fois par chargement ou par publication):ASP.NET: Afficher/masquer par programmation les éléments de la liste des boutons radio

<asp:radioButtonList id="rbl" runat="server" autoPostBack="true"> 
    <asp:listItem value="alpha" text="Alpha" /> 
    <% if(useGreek()) { %> 
     <asp:listItem value="beta" text="Beta" /> 
     <asp:listItem value="gamma" text="Gamma" /> 
    <% } else if(useNato()) { %> 
     <asp:listItem value="bravo" text="Bravo" /> 
     <asp:listItem value="charlie" text="Charlie" /> 
    <% } %> 
    <asp:listItem value="delta" text="Delta" /> 
</asp:radioButtonList> 

(Il sera déjà évident que je ne suis pas habituellement demandé d'écrire pour IIS.)

Quoi qu'il en soit, ASP.NET ne code pas comme intercalés avec des éléments de la liste, c'est donc un pas -aller. J'imagine qu'il y a un moyen de gérer ça en C#, mais j'ai essayé pendant quelques jours maintenant sans aucune chance.

Aussi, juste pour être clair, je cherche une solution côté serveur ici. Je connais bien jQuery, mais nous essayons de garder le traitement de ce formulaire hors du client.

Merci, et faire la fête.

+0

quels résultats obtiennent-vous avec le code actuel ? – VoodooChild

Répondre

2

N ° C#, mais je pense que vous comprenez ce que je veux dire:

dans page_load de codebehind:

If Not IsPostBack Then 
    Me.rbl.Items.Add(New ListItem("Alpha", "alpha")) 
    If (useGreek()) Then 
     Me.rbl.Items.Add(New ListItem("Beta", "beta")) 
     Me.rbl.Items.Add(New ListItem("Gamma", "gamma")) 
    ElseIf (useNato()) Then 
     Me.rbl.Items.Add(New ListItem("Bravo", "bravo")) 
     Me.rbl.Items.Add(New ListItem("Charlie", "charlie")) 
    End If 
    Me.rbl.Items.Add(New ListItem("Delta", "delta")) 
End If 

Si vous devez vérifier chaque postback parce que l'État pourrait changer rapidement, vous pouvez ajouter un Me.rbl.Items.Clear() vers le haut et supprimez le contrôle PostBack.

EDIT: C#

if (!IsPostBack) { 
    this.rbl.Items.Add(new ListItem("Alpha", "alpha")); 
    if ((useGreek())) { 
     this.rbl.Items.Add(new ListItem("Beta", "beta")); 
     this.rbl.Items.Add(new ListItem("Gamma", "gamma")); 
    } else if ((useNato())) { 
     this.rbl.Items.Add(new ListItem("Bravo", "bravo")); 
     this.rbl.Items.Add(new ListItem("Charlie", "charlie")); 
    } 
    this.rbl.Items.Add(new ListItem("Delta", "delta")); 
} 

Parce que je ne sais pas si vous connaissez déjà le modèle codebehind, jetez un oeil à lien suivant: MSDN: Codebehind and Compilation in ASP.NET 2.0

Questions connexes