如何将一个RequiredFieldValidator添加到DropDownList控件?
我有一个DropDownList
与SqlDataSource
绑定来显示数据库中的值。
我无法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>