2011-03-15 53 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