2010-04-14 78 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。