如何将一个RequiredFieldValidator添加到DropDownList控件?

我有一个DropDownListSqlDataSource绑定来显示数据库中的值。

我无法validation使用RequiredFieldValidator

大多数情况下,您将其视为您正在validation任何其他types的控件,但使用所需字段validation程序的InitialValue属性。

 <asp:RequiredFieldValidator ID="rfv1" runat="server" ControlToValidate="your-dropdownlist" InitialValue="Please select" ErrorMessage="Please select something" /> 

基本上它是说,如果在下拉列表中select了InitialValue中的第一个值,那么validation将会成功。

如果数据绑定,则需要按照以下方式插入“请select”值

 this.ddl1.Items.Insert(0, "Please select"); 

假设你的下拉列表是:

 <asp:DropDownList runat="server" id="ddl"> <asp:ListItem Value="0" text="Select a Value"> .... </asp:DropDownList> 

你有两种方法:

 <asp:RequiredFieldValidator ID="re1" runat="Server" InitialValue="0".... 

第二种方法是使用比较validation器:

 <asp:CompareValidator ID="re1" runat="Server" ValueToComare="0" ConroltoCompare="ddl" Operator="Equel".... 

如果您使用的是数据源,那么可以使用另一种方法来执行代码。

请注意以下几点:

  • Value="0"ListItem Value="0"在源页面上,不添加在代码中
  • 如果在DropDownList不包含AppendDataBoundItems="true" ,源代码中的ListItem将被覆盖
  • InitialValue="0"告诉validation器这是应该触发validation器的值(正如其他答案中指出的那样)

例:

 <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>