Numéro d'article: 316495 - Dernière mise à jour: mercredi 22 octobre 2003 - Version: 2.0

BOGUE : Les cases d'option ne s'excluent pas mutuellement lorsqu'elles sont utilisées dans un contrôle serveur Repeater

A noterCet article s'applique à un système d'exploitation différent de celui que vous utilisez. Le contenu de l'article qui ne vous concerne peut-être pas est désactivé.
Ancien nº de publication de cet article : F316495

Sommaire

Agrandir tout | Réduire tout

Symptômes

Lorsque vous ajoutez un contrôle RadioButton ASP.NET au ItemTemplate d'un contrôle serveur Repeater lié aux données, le contrôle RadioButton que vous avez créé ne s'exclut pas mutuellement lorsque vous exécutez la page ASP.NET. Ce problème se produit même si l'attribut GroupName est défini pour les contrôles RadioButton.

Cause

Ce problème se produit car le contrôle serveur Repeater implémente l'interface INamingContainer qui exige que tous les contrôles qui y sont imbriqués possèdent un nom unique lorsqu'ils sont rendus en langage HTML (Hypertext Markup Language). En conséquence, l'attribut de nom HTML de chaque contrôle serveur enfant rendu est unique.

Statut

Microsoft a confirmé l'existence de ce bogue dans les produits Microsoft répertoriés dans la section "Liste des produits concernés par cet article".

Plus d'informations

HTML version 3.2 et versions ultérieures requièrent que tous les contrôles de case d'option qui s'excluent mutuellement aient le même attribut de nom unique. Étant donné que les contrôles qui se trouvent dans un contrôle serveur Repeater lié doivent avoir un nom unique, le contrôle RadioButton HTML rendu ne s'exclut pas mutuellement.

Notez que l'attribut GroupName doit résoudre ce problème. Si vous définissez l'attribut GroupName, chaque contrôle RadioButton doit rendre le même attribut de nom HTML que celui spécifié par l'attribut GroupName du contrôle serveur. Le comportement attendu ne se produit pas car l'attribution d'un nom de client unique remplace l'utilisation de la propriété GroupName.

Étapes pour reproduire le problème

  1. Créez un projet d'application Web Microsoft Visual C# .NET.
  2. En mode Design, faites glisser un contrôle serveur Repeater sur la page Webform1.aspx par défaut.
  3. En mode HTML, ajoutez le code <itemtemplate> suivant à Repeater1 :
    <ItemTemplate>
    <asp:RadioButton id="RadioButton1" runat="server" GroupName="RadioButton1" Text="<%#Container.DataItem.ToString()%>
    ">
    </asp:RadioButton>
    <br>
    </ItemTemplate>
    
  4. Dans l'événement Page_Load de Webform1.aspx, ajoutez le code suivant :
    			TestArray[0]="Test Value 0";
    			TestArray[1]="Test Value 1";
    			TestArray[2]="Test Value 2";
    			Repeater1.DataSource = TestArray;
    			Repeater1.DataBind();
  5. Ajoutez la variable d'instance suivante à la classe Page :
    protected String[] TestArray = new String[3];
  6. Générez le projet, puis affichez la page dans le navigateur.
  7. Cliquez sur chaque contrôle RadioButton pour vérifier que vous pouvez les sélectionner sans changer la valeur des autres contrôles RadioButton.

Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft ASP.NET (inclus dans le .NET Framework)
Mots-clés : 
kbbug kbctrlcreate kbdatabinding kbdebug kbgrpdsasp kbnofix kbservercontrols kbwebforms KB316495
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Retired KB ArticleExclusion de responsabilité concernant les contenus obsolètes dans la Base de connaissances
Cet article concerne des produits pour lesquels Microsoft n'offre plus de support. Il est par conséquent fourni « en l'état » et ne sera plus mis à jour.