2009-06-03 20 views
0

Wenn ich ddl.Visible = true ändere (es wird auf partiellem Postback/updatepanel von einem anderen Formularelementereignis geändert), wird der RequiredFieldValidator nicht ausgelöst?RequiredFieldValidator wird nicht ausgelöst, wenn ControlToValidate visibility geändert wird

HINWEIS: Dies ist keine Frage, wie Sie den RequiredFieldValidator unter normalen Umständen verwenden. Mein Formular enthält überlappende Dropdown-Listen, die dynamisch mit ein- und ausgeschalteter Sichtbarkeit erstellt werden.

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

Antwort

2

Sie müssen die InitialValue Eigenschaft festlegen auf Ihrem RequiredFieldValidator, so dass er weiß, wann der Wert des DropDownList verändert hat. Zum Beispiel auf einem Drop-Down mit diesen Werten:

  • Please Select
  • Dog
  • Cat
  • Bird

würden Sie hinzufügen, um dieses Attribut

InitialValue="Please Select" 

zu Ihrer RequiredFieldValidator.

Ohne zu wissen, ob sich der Wert geändert hat, kann der Prüfer nicht feststellen, ob der Benutzer seine Anforderung erfüllt hat oder nicht.

+0

InitalValue hat einen Standardwert von String.Empty, was mein erstes ListItem ist. Die Validatoren funktionieren gut, solange ich die Sichtbarkeit nicht umschalte. –

+0

Können Sie bitte alle relevanten Code posten? Ihre Frage zeigt keinen für InitialValue festgelegten Wert an. –

+0

Andrew Sie sind richtig, graben tiefer (zu viel Dynamik macht meinen Kopf drehen) Ich fand, dass mein Standardwert ListItem Wert 0 nicht String.Empty war. Ich ging weiter und setzte meinen InitalValue explizit. Danke –

Verwandte Themen