【问题标题】:How to add a RequiredFieldValidator to DropDownList control?如何将RequiredFieldValidator 添加到DropDownList 控件?
【发布时间】:2011-01-17 20:14:19
【问题描述】:

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

我无法使用RequiredFieldValidator 进行验证。

【问题讨论】:

    标签: asp.net validation drop-down-menu requiredfieldvalidator


    【解决方案1】:

    在大多数情况下,您将其视为验证任何其他类型的控件,但使用必填字段验证器的 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");
    

    【讨论】:

    • 嗨伙计,*这是我的代码,当我提交按钮时我仍然无法收到消息
    • 数据绑定后,您的下拉列表是否包含“Selectvalue”的值。我已经编辑了我的答案以显示如何。
    • @Fishcake,你需要 InitialValue="0"。您回答中的其他所有内容都很好。
    • 如果您按如下方式填充它:ddl1.Items.Insert(0, new ListItem("Please select", "0")); 那么您确实需要设置InitialValue = "0"
    • 我会以这种方式添加顶部项目,而不是从代码隐藏插入:&lt;asp:DropDownList ID="ddlDepo" runat="server" AppendDataBoundItems="true"&gt; &lt;asp:ListItem Text="Please select" Value="0"&gt;&lt;/asp:ListItem&gt; &lt;/asp:DropDownList&gt;
    【解决方案2】:

    假设您的下拉列表是:

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

    【讨论】:

    • 如果数据绑定,我认为这仍然比插入列表更可取。您只需更改 DropDownList 即可支持它。 &lt;asp:DropDownList runat="server" id="ddl" AppendDataBoundItems="true"&gt;
    • 问题:通过使用RequiredFieldValidator,我可以很好地为我的下拉列表获取ErrorMessage,但是,当我从下拉列表中选择时,所有其他表单类,例如我的文本框的错误消息都会清除以及 ddl 的错误消息。
    【解决方案3】:

    如果您使用的是数据源,这里还有另一种无需代码的方式。

    注意以下要点:

    • Value="0"ListItem 在源页面上,未添加到代码中
    • 如果不包含源代码中的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>
    

    【讨论】:

    • 我在搜索为使用 SQL 数据源的下拉列表设置初始值时遇到的最佳答案。
    【解决方案4】:

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

    <asp:RequiredFieldValidator InitialValue="0" Display="Dynamic" CssClass="error" runat="server" ID="your_id" ValidationGroup="validationgroup" ControlToValidate="your_dropdownlist_id" />
    

    【讨论】:

      猜你喜欢
      • 2010-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-10
      • 1970-01-01
      • 1970-01-01
      • 2012-02-13
      相关资源
      最近更新 更多