The required field validator disappears in the drop-down list.

I populate two dropdownlist in asp.net. Both are assigned to the required field validation module.

Code code below

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); } 

constructor code below

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

Now, when I select the field, and then select "- Select--" again, the validator appears and disappears.

Why does the validator not remain? Where am I mistaken?

Hema

+4
source share
2 answers

This problem has bitten me a bunch of times and only because it is a little strange how they developed it, in my opinion.

The problem is that you are using the InitialValue property to compare with the value of a list item property when it should be compared with a text value. They would have to call the InitialText property or something ...

Change RequiredFieldValidator to the following:

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

Client code compares the displayed value, rather than the value attached to the selected fragment behind the frame.

+1
source

Workaraund: using the codebehind method, which runs during auto-repeat, if the selected item is the default item, set the RequiredFieldValidator1.IsValid attribute to false.

0
source

Source: https://habr.com/ru/post/1306944/


All Articles