2011-03-15 51 views
29

我有Dropdownlist,其值字段和文本字段在运行时绑定。 它具有--select--作为值为0 的第一项,其余值在运行时绑定。Asp.net中的Dropdownlist验证使用必需的字段验证程序

我已经给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; 

回答

48
<asp:RequiredFieldValidator InitialValue="-1" ID="Req_ID" Display="Dynamic" 
    ValidationGroup="g1" runat="server" ControlToValidate="ControlID" 
    Text="*" ErrorMessage="ErrorMessage"></asp:RequiredFieldValidator> 
+0

U可以看到我更新的帖子 – 2011-03-15 11:21:39

+1

请确认你已经把上面的代码中,如果(!的IsPostBack){}方法 – 2011-03-15 11:51:37

+0

是的,它是里面,如果(!的IsPostBack) {}和我打电话给代码behid一些单选按钮更改事件 – 2011-03-16 04:53:54

4

这里用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

-1

添加InitialValue="0"需要实地验证标签

<asp:RequiredFieldValidator InitialValue="-1" ID="Req_ID" 
     Display="Dynamic" ValidationGroup="g1" runat="server" 
     ControlToValidate="ControlID" 
     InitialValue="0" ErrorMessage="ErrorMessage"> 
</asp:RequiredFieldValidator> 
+0

为什么你有'InitialValue =“ - 1”'和'InitialValue =“0”'? – 2016-12-28 16:49:40

+0

@nueverest,在大多数情况下,当我开发要填充到下拉菜单中的数据时,默认项目“Select ....”通常会分配一个非正值和非零值,因此为-1。对于基于零的价值体系,这允许开发人员检查“<0”和基于一个价值体系的相同政策“<0”。 – GoldBishop 2017-02-14 21:00:27