我有Dropdownlist,其值字段和文本字段在运行时绑定。
它的第一项为--select--
,其值为0
其余的值在运行时绑定。
我已将控件和验证器的validaton组赋予"g1"
和Intialvalue=0
但即使我选择--select--
选项,页面也会回发。
<asp:DropDownList AutoPostBack="true" CssClass="dropdown" ValidationGroup="g1"
ID="ddlReportType" runat="server"
OnSelectedIndexChanged="ddlReportType_SelectedIndexChanged"></asp:DropDownList>
<asp:RequiredFieldValidator ControlToValidate="ddlReportType" ID="RequiredFieldValidator1"
ValidationGroup="g1" CssClass="errormesg" ErrorMessage="Please select a type"
InitialValue="0" runat="server" Display="Dynamic">
</asp:RequiredFieldValidator>
并且代码背后绑定下拉列表
ddlReportType.Items.Clear();
ddlReportType.DataSource = dt.Tables[0];
ddlReportType.DataTextField = "ReportType";
ddlReportType.DataValueField = "ReportTypeID";
ddlReportType.DataBind();
ddlReportType.Items.Insert(0, new ListItem("--Select--", "0"));
//ddlReportType.Items[0].Value = "0";
ddlReportType.SelectedIndex = 0;
答案 0 :(得分:49)
<asp:RequiredFieldValidator InitialValue="-1" ID="Req_ID" Display="Dynamic"
ValidationGroup="g1" runat="server" ControlToValidate="ControlID"
Text="*" ErrorMessage="ErrorMessage"></asp:RequiredFieldValidator>
答案 1 :(得分:5)
这里使用asp:CompareValidator,并将值与“select”选项进行比较。
使用Operator="NotEqual" ValueToCompare="0"
阻止用户提交“选择”。
<asp:CompareValidator ControlToValidate="ddlReportType" ID="CompareValidator1"
ValidationGroup="g1" CssClass="errormesg" ErrorMessage="Please select a type"
runat="server" Display="Dynamic"
Operator="NotEqual" ValueToCompare="0" Type="Integer" />
当您执行上述操作时,如果您从下拉列表中选择“选择”选项,则会显示ErrorMessage
。
答案 2 :(得分:0)
我正在努力解决这个问题几天,直到我不得不建立新的Dropdown时遇到问题。我有几个DropDownList控件,并试图让没有运气的验证工作。一个是数据绑定,另一个是从aspx页面填充。我需要删除数据绑定一并添加第二个手动列表。在我的情况下,验证器失败,如果您构建了这样的下拉列表并查看了必需或比较验证器的任何值(0或-1):
<asp:DropDownList ID="DDL_Reason" CssClass="inputDropDown" runat="server">
<asp:ListItem>--Select--</asp:ListItem>
<asp:ListItem>Expired</asp:ListItem>
<asp:ListItem>Lost/Stolen</asp:ListItem>
<asp:ListItem>Location Change</asp:ListItem>
</asp:DropDownList>
然而,添加像这样的InitialValue可立即用于比较验证器。
<asp:ListItem Text="-- Select --" Value="-1"></asp:ListItem>
答案 3 :(得分:-1)
在必填字段验证程序标记
中添加InitialValue="0"
<asp:RequiredFieldValidator InitialValue="-1" ID="Req_ID"
Display="Dynamic" ValidationGroup="g1" runat="server"
ControlToValidate="ControlID"
InitialValue="0" ErrorMessage="ErrorMessage">
</asp:RequiredFieldValidator>