2009-04-08 10 views
0
<asp:DropDownList ID="ddl1" runat="server"> 
    <asp:ListItem Text="First" Value="1"></asp:ListItem> 
    <asp:ListItem Text="Second" Value="2"></asp:ListItem> 
</asp:DropDownList> 

<asp:TextBox ID="tb1" runat="server"/> 

<asp:Button ID="btn1" text="Go!" OnClick="btn1_Click" runat="server" /> 



public void btn1_Click(object sender, EventArgs e) 
{ 


} 

Si l'utilisateur sélectionne la liste déroulante avec le texte 'Premier', les données de la zone de texte doivent être un nombre. Si elles ont sélectionné «Second», elles doivent uniquement être des lettres.Modification dynamique du type de validateur dans une zone de texte

Comment puis-je créer dynamiquement un contrôle de validation et modifier son comportement?

J'ai essayé de créer l'objet de validation, de définir le contrôle à valider dans la zone de texte et d'appeler sa méthode Validate dans l'événement btn1_click mais cela n'a pas fonctionné.

mise à jour

ici est le code que j'ai essayé:

public void btn1_Click(object sender, EventArgs e) 
    { 
     RequiredFieldValidator rfv1 = new RequiredFieldValidator(); 

     rfv1.ID = "rfv1"; 
     rfv1.ControlToValidate = tb1.ID; 
     rfv1.Text = "please enter a value for tb1"; 


     rfv1.Validate(); 

     Response.Write("<br>Page.IsValid: " + Page.IsValid); 

    } 
+0

Pouvez-vous poster plus de code? Plus précisément, le code que vous avez mentionné dans votre dernière phrase? – Anders

Répondre

2
  • Option 1:
    Ajouter les validateurs à la zone de texte et les mettre activés/désactivés en fonction de la sélection de l'utilisateur.

  • Option 2:
    Utilisez un validateur personnalisé qui prend la dropdownlist en compte (et peut-être envelopper le tout dans un contrôle personnalisé).

Parmi ceux-ci, je crois que je préfère l'option 1, mais je dois essayer de voir comment il fonctionne vraiment dans le navigateur (la facilité ou est-il possible d'échanger le validateur activé dans javascript) .

Vous ne voulez pas ajouter/supprimer le validateur dynamiquement, parce que ce doit être fait côté serveur et cela signifie faire un poste arrière lorsque l'utilisateur modifie la sélection dropdownlist pour régler le validateur correct avant vous pouvez valider la boîte de texte. Mes deux solutions suggérées l'évitent.

+0

merci, une solution simple! – Blankman