2010-04-14 79 views
4

我在asp.net中填充两个下拉列表。 两者都被分配到必需的字段验证器。必填字段验证程序在下拉列表中发回消息

代码隐藏是如下

if (!Page.IsPostBack) 
     { 
      DataTable dt = new DataTable(); 
      dt.Columns.Add("emp"); 
      dt.Columns.Add("ename"); 
      for (int i = 0; i < 5; i++) 
      { 
       DataRow dr = dt.NewRow(); 
       dr["emp"] = (i + 1).ToString(); 
       dr["ename"] = (i + 1).ToString(); 
       dt.Rows.Add(dr); 
      } 
      ddlEmp.DataSource = dt; 
      ddlEmp.DataTextField = "emp"; 
      ddlEmp.DataValueField = "ename"; 
      ddlEmp.DataBind(); 
      ListItem l1 = new ListItem("--Select--", "0"); 
      ddlEmp.Items.Insert(0, l1); 
      DropDownList1.DataSource = dt; 
      DropDownList1.DataTextField = "emp"; 
      DropDownList1.DataValueField = "ename"; 
      DropDownList1.DataBind(); 
      DropDownList1.Items.Insert(0, l1); 

     } 

设计代码如下

<asp:DropDownList ID="ddlEmp" AutoPostBack="true" runat="server"></asp:DropDownList> 
    <asp:RequiredFieldValidator ID="rfvEmp" runat="server" ControlToValidate="ddlEmp" ErrorMessage ="employee" InitialValue="0"> 
    </asp:RequiredFieldValidator> 

    <asp:DropDownList ID="DropDownList1" AutoPostBack="true" runat="server"></asp:DropDownList> 
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="DropDownList1" ErrorMessage ="DropDownList1" InitialValue="0"> 
    </asp:RequiredFieldValidator> 
    <asp:Button ID="btn" runat="server" CausesValidation="true" /> 

现在发生的事情是,当我选择一个字段,然后再次去选择“ - 选择 - “,验证器出现并消失。

验证器为什么不保留? 我哪里错了?

喝骂

回答

1

这个问题已经咬伤了我一堆的时间,只是因为它是一个有点古怪的他们是如何设计的,它在我看来。

问题是您使用InitialValue属性与列表项的值属性进行比较,当它应该与文本值进行比较时。他们应该有一个名为财产InitialText或东西...

更改RequiredFieldValidator以下几点:附加到选择

<asp:RequiredFieldValidator ID="rfvEmp" runat="server" ControlToValidate="ddlEmp" ErrorMessage="employee" InitialValue="--Select--"> 
</asp:RequiredFieldValidator> 

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="DropDownList1" ErrorMessage ="DropDownList1" InitialValue="--Select--"> 
</asp:RequiredFieldValidator> 

客户端代码比较正在显示的值,而不是值在幕后。

+0

嗨它不工作我也面临同样的问题 – SANDEEP 2013-06-28 09:13:50

+0

对不起,不对。 InitialValue与DDL的SelectedValue比较.http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.requiredfieldvalidator.initialvalue%28v=vs.110%29.aspx不知道为什么这被标记为正确答案。我有同样的问题。没有运气到目前为止,下拉触发自动回复和红色错误消息只是在回发期间闪烁..:/ – Osvier 2015-01-14 01:04:40

0

Workaraund:如果所选项目是默认项目,则在autopostback上执行的codebehind方法将RequiredFieldValidator1.IsValid属性设置为false。