2009-09-06 6 views
0

J'ai reçu d'une agence de conception HTML suivant à afficher sous une forme sur l'un des asp.net webapps:asp.net pour RadioButtonList d'éléments html

<label> 
    <input type="radio" /> 
    Label Text 1 
</label> 

<label> 
    <input type="radio" /> 
    Label Text 2 
</label> 

<label> 
    <input type="radio" /> 
    Label Text 3 
</label> 

Vous pouvez imaginer que la sortie produit placera le bouton radio sur la gauche du texte de l'étiquette.

Étant donné que le nombre d'étiquettes/boutons radio est variable, j'ai décidé d'utiliser RadioButtonList pour manipuler dynamiquement le nombre de contrôles ajoutés.

Le problème avec le RadioButtonList est que le html produit par lui n'est pas très flexible. Le plus proche de la mise en page souhaitée par le client est le code suivant. Mais cela place les boutons radio sur la droite de l'étiquette. :(

<asp:RadioButtonList ID="DayOfWeekRadioButtonList" runat="server" RepeatLayout="Flow" RepeatDirection="Vertical" TextAlign="Left"> 
    </asp:RadioButtonList> 

Et voici le code HTML généré:

<label for="ControlID1">Text 1</label> 
<input id="RadioControlID1" type="radio" name="NameRadioControlID1" value="Text 1" /> 

<label for="ControlID2">Text 2</label> 
<input id="RadioControlID2" type="radio" name="NameRadioControlID2" value="Text 2" /> 

<label for="ControlID3">Text 3</label> 
<input id="RadioControlID3" type="radio" name="NameRadioControlID3" value="Text 3" /> 

Est-il possible de placer le contrôle d'entrée dans l'étiquette

Répondre

0

Votre TextAlign propriété est définie sur "gauche", qui signifie que le texte va à la gauche des boutons, je crois que le réglage à TextAlign = "Right" devrait faire ce que vous voulez

+0

Cette propriété n'est malheureusement pas liée à mon problème. :( – Pablo

1

Vous ne serez pas en mesure d'obtenir le RadioButtonList cont ROL pour rendre le bouton à l'intérieur de l'étiquette que vous décrivez sans peut-être faire un contrôle personnalisé pour remplacer le comportement. Comme womp mentionné, vous devez définir TextAlign = "Right" au lieu de "Left", ou si vous laissez cet attribut vide, il devrait avoir le comportement attendu. Le réglage sur "Droite" signifie "aligner le texte sur le droit du bouton radio." Vous avez le contraire avec "Gauche". Au lieu d'effectuer un contrôle personnalisé, vous pouvez utiliser des étiquettes régulières et des contrôles RadioButton pour obtenir la sortie souhaitée, mais vous devez associer un nom de groupe et vérifier chaque bouton individuellement. Cela peut être amélioré en les plaçant dans un contrôle Panel puis en les bouclant et en déterminant lequel est sélectionné.

Il est plus balisage mais il correspond au format que vous avez mentionné:

<label> 
    <asp:RadioButton ID="rbMonday" runat="server" GroupName="DaysOfWeek" /> 
    Monday 
</label> 

Franchement cependant, le balisage ne devrait pas d'importance car il ne fournit aucune fonctionnalité supplémentaire. En fin de compte, vous voulez capturer l'entrée, et si l'étiquette contient le bouton radio ou pas n'affecte pas cet objectif. Si l'agence avec laquelle vous traitez est flexible, vous pouvez expliquer les différentes options et peut-être accepter la mise en forme par défaut, ce qui vous rend plus productif et vous permet de passer moins de temps à cela (ce qui devrait les rendre plus heureux).

+0

@pablo: on dirait que vous avez downvoté mais n'avez pas expliqué le problème avec la réponse, ça ne marche pas pour vous ou pas ce que vous cherchez? –

Questions connexes