36

我有下拉列表,其值字段和文本字段在运行时绑定。它--select--的第一个项目的值为 ,0 其余值在运行时绑定。

我已经为控件和验证器提供了验证组"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;
4

4 回答 4

55
<asp:RequiredFieldValidator InitialValue="-1" ID="Req_ID" Display="Dynamic" 
    ValidationGroup="g1" runat="server" ControlToValidate="ControlID"
    Text="*" ErrorMessage="ErrorMessage"></asp:RequiredFieldValidator>
于 2011-03-15T10:57:59.843 回答
6

这里使用 asp:CompareValidator,并将值与“选择”选项进行比较。

用于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.

于 2011-10-14T22:19:32.363 回答
0

我为此苦苦挣扎了几天,直到我不得不构建一个新的下拉菜单时偶然发现了这个问题。我有几个 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>
于 2018-05-22T20:41:30.037 回答
-1

添加InitialValue="0"必填字段验证器标签

 <asp:RequiredFieldValidator InitialValue="-1" ID="Req_ID"
      Display="Dynamic" ValidationGroup="g1" runat="server"
      ControlToValidate="ControlID"
      InitialValue="0" ErrorMessage="ErrorMessage">
 </asp:RequiredFieldValidator>
于 2015-06-10T11:50:35.013 回答