我有一个
DropDownList
与 SqlDataSource
绑定来显示数据库中的值。
我无法使用
RequiredFieldValidator
进行验证。
在大多数情况下,您将其视为正在验证任何其他类型的控件,但使用必填字段验证器的 InitialValue 属性。
<asp:RequiredFieldValidator ID="rfv1" runat="server" ControlToValidate="your-dropdownlist" InitialValue="Please select" ErrorMessage="Please select something" />
基本上,它的意思是,如果在下拉列表中选择了 InitialValue 中设置的 1 之外的任何其他值,则验证将会成功。
如果数据绑定,您需要在后面插入“请选择”值,如下所示
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" />
第二种方法是使用比较验证器:
<asp:CompareValidator ID="re1" runat="Server" ValueToCompare="0" ControlToCompare="ddl" Operator="Equal" />
如果您使用数据源,这里有另一种无需后台代码的方法。
注意以下要点:
ListItem
的Value="0"
在源码页面,不是在代码中添加的ListItem
将被覆盖
AppendDataBoundItems="true"
在 DropDownList
InitialValue="0"
告诉验证器这是
应该触发该验证器(如其他答案中指出的)示例:
<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" :当在 ddl 中选择第 0 个索引项时,将触发初始验证。
<asp:RequiredFieldValidator InitialValue="0" Display="Dynamic" CssClass="error" runat="server" ID="your_id" ValidationGroup="validationgroup" ControlToValidate="your_dropdownlist_id" />
如果您想检查空字符串,请使用以下命令:
<asp:RequiredFieldValidator ID="REQUIREDFIELDVALIDATOR1" ControlToValidate="ControlId" runat="server" ValidationGroup="groupName" InitialValue="" Display="Dynamic" ErrorMessage="Please select" SetFocusOnError="true"></asp:RequiredFieldValidator>