我在 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" />
现在发生的情况是,当我选择一个字段,然后再次选择“--选择--”时,验证器出现并消失。
为什么验证者不留下来?
我哪里错了?
Hema
这个问题已经困扰了我很多次,只是因为在我看来他们的设计方式有点古怪。
问题是你使用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>
客户端代码正在比较正在显示的值,而不是附加到幕后选择的值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)