6
votes

Liste des boutons radio dans le contrôle de répéteur

J'ai un contrôle répéteur dans ma page. Je dois avoir un bouton radio dans toutes les lignes (modèle d'élément) sur la vérification d'un bouton radio Les boutons radio restants doivent décocher.

Comment faire cela?

Merci d'avance, Tor


0 commentaires

4 Réponses :


1
votes

Il suffit d'ajouter un ONCHeckedchanged Événement au bouton radio, boucle tous les Radiobuttons du répéteur pour les décocher. Vous pouvez utiliser UpatePanel si vous ne voulez pas Post-plan.

.aspx xxx

.cs> xxx


2 commentaires

Pour l'exemple ci-dessus, si vous ajoutez la propriété "GROUPNAME" pour le contrôle , il ajoutera tout le RADIOBUTON sous le même groupe, alors qu'un seul bouton radio sera sélectionné.


Un UpdatePanel provoquera toujours un post-pack, juste que ce sera un post-plan d'Ajax. Il faudra toujours du temps car il doit suivre / depuis le serveur.



11
votes

Malheureusement, c'est un bug connu ( http://support.microsoft.com/kb/316495 a>) que la propriété de groupeName ne fonctionne pas comme prévu lorsqu'il est utilisé dans un répéteur. Le problème est que le répéteur implémente l'interface InamingContainer qui oblige toutes les commandes imbriquées à avoir un nom unique EM> lorsqu'il est rendu au HTML. Cela provoque la pause des boutons radio car pour qu'ils travaillent correctement, ils doivent avoir noms identiques em>.

Il y a 2 points de travail que j'ai rencontré: P>

1 - La première est une solution JavaScript côté client. Il a été fourni par support Microsoft A >. Ou une version plus facile à lire ici . Les instructions sont les suivantes. Inclure le JavaScript suivant dans la tête: p>

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
      if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem) return;
      RadioButton rb = (RadioButton) e.Item.FindControl("RadioButton");
      string script = "SetUniqueRadioButton('Repeater1.*RadioGroup',this)";
      rb.Attributes.Add("onclick", script);
}


0 commentaires

1
votes

Je sais que c'est vieux, mais la raison des boutons ne fonctionne pas est que l'attribut de nom est écrasé. Si vous utilisez JQuery, vous pouvez attribuer le bouton radio à une classe, puis définissez l'attribut Nom pour remplacer le nouveau nom.

$('.MyRadioClass').attr("name","MyFixedName");


0 commentaires

-1
votes

Une autre alternative plus simple, où aucune mise en forme de fantaisie n'est requise, est d'utiliser une radiobuttoniste: xxx


1 commentaires

Ce n'est pas une alternative dans le cas d'une liste de réception, GridView ou Repeater, comme dans cette question.