2012-01-18 28 views
0

有許多帖子處理更新面板和部分頁面呈現內的驗證控件。但是我在這裏遇到了一個不同的問題,我嘗試更新到sp1 .NET Framework 2.0和.NET Framework 4.0,但沒有任何反應。DropUpList驗證AutoPostBack在updatepanel中設置爲true

基本上我在更新面板裏面有一個dropdownlist,它的autopostback被設置爲true,並且一個空項-- Select --被添加爲index 0用於驗證(Required Field Validator)的用途。我確實發生,即使當我選擇索引0時,驗證消息會短暫出現,然後發生部分回發。有沒有人有任何相同或替代方法來做到這一點的原因。

注:

我所選擇的指數變化的事件中填充其他控件(下拉列表)。我可以使用AjaxControlToolkit的級聯下拉列表,但後來我失去了其他控件需要的事件驗證功能。

回答

0

爲什麼不驗證客戶端選擇在代碼後面?

爲前」:

if (ddlName.selectedValue == "-1") 
{ 
    lblErr.text = "You have to select..."; 
    lblErr.visible = true; 
} 
+0

@barek這將是我最後的手段(我現在使用的是什麼),直到我得到另一種選擇 – Deeptechtons

0

作爲一個快速測試,我想出了這一點,這工作(對我來說):

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <asp:RequiredFieldValidator ID="rfv" runat="server" ControlToValidate="ddl1" InitialValue="0" ValidationGroup="DDLOnly">*</asp:RequiredFieldValidator> 
     <asp:DropDownList ID="ddl1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="test" CausesValidation="true" ValidationGroup="DDLOnly"> 
      <asp:ListItem Value="0">---Select---</asp:ListItem> 
      <asp:ListItem Value="1">Option1</asp:ListItem> 
      <asp:ListItem Value="2">Option2</asp:ListItem> 
      <asp:ListItem Value="3">Option3</asp:ListItem> 
     </asp:DropDownList> 
     <asp:DropDownList ID="ddl2" runat="server"> 
     </asp:DropDownList> 
     <asp:RequiredFieldValidator ID="rfvTxt" runat="server" ControlToValidate="txt1" ValidationGroup="WholePage">*</asp:RequiredFieldValidator> 
     <asp:TextBox ID="txt1" runat="server" ValidationGroup="WholePage"></asp:TextBox> 
     <asp:Button ID="btn1" runat="server" Text="Button" OnClientClick="return Page_ClientValidate();" OnClick="btn" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 

而且在後面的代碼:

protected void test(object sender, EventArgs e) 
{ 
    ddl2.Items.Clear(); 
    for (int i = 0; i < 4; i++) 
     ddl2.Items.Add(new ListItem("Test" + ddl1.SelectedIndex)); 
} 

當選擇了任何選項時填充第二個DDL,但不是用於初始項目0

編輯:增加在TextBoxButton與驗證組;只有ddl1驗證上SelectedIndexChanged但兩者ddl1txt1被驗證OnClick

+0

@lain它應該工作,因爲'causes'驗證已啓用。我不能那樣做,因爲那樣會驗證頁面上你還沒有嘗試過的其他控件。 – Deeptechtons

+0

@deeptechtons - 將你的DDL添加到它自己的驗證組中?您可以使用JavaScript從提交按鈕中觸發整個頁面的驗證組和DDL的驗證組。 [鏈接](http://stackoverflow.com/a/984289/1038027) – Iain

+0

@萊恩這是一種黑客是不是?所以沒有任何直接的解決方案 – Deeptechtons

相關問題