68

我有一个DropDownList与 a 绑定的SqlDataSource来显示数据库中的值。

我无法使用RequiredFieldValidator.

4

4 回答 4

104

在大多数情况下,您将其视为验证任何其他类型的控件,但使用必填字段验证器的 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");
于 2010-02-17T13:27:52.010 回答
29

假设您的下拉列表是:

<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" />
于 2010-02-17T13:36:50.240 回答
12

如果您使用的是数据源,这是另一种无需代码即可完成的方法。

请注意以下关键点:

  • ListItemof是在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>
于 2016-08-02T17:43:08.243 回答
1

InitialValue="0" :当在 ddl 中选择第 0 个索引项时将触发初始验证。

<asp:RequiredFieldValidator InitialValue="0" Display="Dynamic" CssClass="error" runat="server" ID="your_id" ValidationGroup="validationgroup" ControlToValidate="your_dropdownlist_id" />
于 2018-08-28T06:28:02.217 回答