J'ai un DropDownList
lié à unSqlDataSource
pour afficher les valeurs de la base de données.
Je ne parviens pas à valider avec une RequiredFieldValidator
.
Dans la plupart des cas, vous le traitez comme si vous validiez tout autre type de contrôle tout en utilisant la propriété InitialValue du validateur de champ requis.
<asp:RequiredFieldValidator ID="rfv1" runat="server" ControlToValidate="your-dropdownlist" InitialValue="Please select" ErrorMessage="Please select something" />
En gros, cela signifie que la validation aboutira si une valeur autre que le 1 défini dans InitialValue est sélectionnée dans la liste déroulante.
Si la liaison de données, vous devez insérer la valeur "Veuillez sélectionner" ensuite comme suit
this.ddl1.Items.Insert(0, "Please select");
Supposons que votre liste déroulante soit:
<asp:DropDownList runat="server" id="ddl">
<asp:ListItem Value="0" text="Select a Value">
....
</asp:DropDownList>
Vous avez deux moyens:
<asp:RequiredFieldValidator ID="re1" runat="Server" InitialValue="0"....
la deuxième méthode consiste à utiliser un validateur de comparaison:
<asp:CompareValidator ID="re1" runat="Server" ValueToComare="0" ConroltoCompare="ddl" Operator="Equel"....
Si vous utilisez une source de données, voici une autre façon de le faire sans code derrière.
Notez les points clés suivants:
ListItem
de Value="0"
est sur la page source, non ajoutée dans le codeListItem
de la source sera écrasée si vous n'incluez pas AppendDataBoundItems="true"
dans la DropDownList
InitialValue="0"
indique au validateur qu'il s'agit de la valeur que Doit déclencher ce validateur (comme indiqué dans d'autres réponses)Exemple:
<asp:DropDownList ID="ddlType" runat="server" DataSourceID="sdsType"
DataValueField="ID" DataTextField="Name" AppendDataBoundItems="true">
<asp:ListItem Value="0" Text="--Please Select--" Selected="True"></asp:ListItem>
</asp:DropDownList>
<asp:RequiredFieldValidator ID="rfvType" runat="server" ControlToValidate="ddlType"
InitialValue="0" ErrorMessage="Type required"></asp:RequiredFieldValidator>
<asp:SqlDataSource ID="sdsType" runat="server"
ConnectionString='<%$ ConnectionStrings:TESTConnectionString %>'
SelectCommand="SELECT ID, Name FROM Type"></asp:SqlDataSource>
InitialValue = "0": la validation initiale sera déclenchée lorsque le 0ème élément d'index est sélectionné dans ddl.
<asp:RequiredFieldValidator InitialValue="0" Display="Dynamic" CssClass="error" runat="server" ID="your_id" ValidationGroup="validationgroup" ControlToValidate="your_dropdownlist_id" />