2009-06-03 6 views
0

Lorsque je change ddl.Visible = true (il est modifié sur une publication partielle/un panneau de mise à jour à partir d'un autre événement d'élément de formulaire) le RequiredFieldValidator ne se déclenche pas?RequiredFieldValidator ne se déclenche pas lorsque la visibilité de ControlToValidate est modifiée

REMARQUE: Il ne s'agit pas d'une question sur l'utilisation de RequiredFieldValidator dans des circonstances normales. Mon formulaire a des listes déroulantes en cascade qui sont toutes construites dynamiquement avec leur visibilité activée et désactivée.

<asp:DropDownList ID="ddl" Visible="false" AutoPostBack="True" runat="server">                
</asp:DropDownList> 
<asp:RequiredFieldValidator ControlToValidate="ddl" 
ID="RequiredFieldValidator1" 
runat="server" ErrorMessage="Required"></asp:RequiredFieldValidator>  

Répondre

2

Vous devez définir la propriété InitialValue sur votre RequiredFieldValidator pour qu'il sache quand a changé la valeur du DropDownList. Par exemple, dans un menu déroulant avec ces valeurs:

  • Please Select
  • Dog
  • Cat
  • Bird

vous ajoutez cet attribut

InitialValue="Please Select" 

à votre RequiredFieldValidator.

Sans savoir si la valeur a changé, il est impossible pour le validateur de savoir si l'utilisateur a satisfait à ses exigences.

+0

InitalValue a une valeur par défaut de String.Empty qui correspond à mon premier ListItem. Les validateurs fonctionnent bien tant que je ne bascule pas la visibilité. –

+0

Pouvez-vous poster tout le code pertinent s'il vous plaît? Votre question n'affiche pas de valeur définie pour InitialValue. –

+0

Andrew vous avez raison, creuser plus profond (trop dynamique faisant tourner ma tête) J'ai trouvé que la valeur de mon ListItem par défaut était 0 pas String.Empty. Je suis allé de l'avant et j'ai défini mon InitalValue pour être explicite. Merci –