2012-05-16 19 views
1

我有ddlCountry下拉列表和ddlState下拉列表。 ddlState在更新面板中。在選擇國家時,我使用ddlCountry的selectedindexchanged事件填充了它的狀態。我已經在綁定後添加了起始值「-1」,並且如果dropdownlist內容是[Select]值「-1」,則檢查Javascript,然後提醒並返回false。DROPDOWNLIST(ddlState)價值損失時接取的Javascript AsyncPostBackTrigger後更新面板

但驗證是正確的ddlCountry和ddlState其值將成爲AJAX更新面板火災和驗證失敗後的「空白」。

我應該如何解決它們?我不知道爲什麼ddlState值在AsyncPostBackTrigger後丟失。

//javascript validation 

     function validateForm() 
       { 
        if (ddlCountry .value == "-1") 
        { 
         alert("Country should not be blank."); 
         ddlCountry .focus(); 
         return false; 
        } 
        if (ddlState .value == "-1") 
        { 
         alert("State should not be blank."); 
         ddlState .focus(); 
         return false; 
        } 

        return true; 
       } 
     //Aspx code 
<asp:DropDownList ID="ddlCountry " runat="server" CssClass="csstextbox" Width="207px" 
           AutoPostBack="true" OnSelectedIndexChanged="ddlCountry _SelectedIndexChanged"> 
          </asp:DropDownList> 
       <asp:UpdatePanel ID="updatePanelState" runat="server"> 
                <ContentTemplate>        
         <asp:DropDownList ID="ddlState " runat="server" CssClass="csstextbox" Width="177px"> 
                 </asp:DropDownList> 
                </ContentTemplate> 
                <Triggers> 
                 <asp:AsyncPostBackTrigger ControlID="ddlCountry" EventName="SelectedIndexChanged" /> 
                </Triggers> 
               </asp:UpdatePanel> 
      //Code Behind 

    protected void Page_Load(object sender, EventArgs e) 
     { 
       if(!IsPostBack) 
      { 
        BindCountry(); 
        } 
      } 
      protected void ddlCountry_SelectedIndexChanged(object sender, EventArgs e) 
       {  
        int countryID = Convert.ToInt32(ddlCountry.SelectedItem.Value); 

        ifcountryID == -1) 
        { 
         return; 
        } 

        strSQL = @"SELECT State_ID,State_Desc 
           FROM State_Master 
           WHERE countryID = '" + countryID + @"'; 

        DataTable dataTableState = null; 
        dataTableState = objSqlDbComm.ExecuteDatasetQuery(strSQL).Tables[0]; 

        var dictioneryState = new Dictionary<int, string>(); 
        foreach(DataRow dr in dataTableStudy.Rows) 
        { 
         dictioneryState .Add(Convert.ToInt32(dr["State_ID"]), dr["State_Desc"].ToString()); 
        } 

        ddlState.DataTextField = "Value"; 
        ddlState.DataValueField = "Key"; 
        ddlState.DataSource = dictioneryState; 
        ddlState.DataBind(); 
        ddlState.Items.Insert(0, new ListItem("[Select]", "-1")); 
        ddlState.Items[0].Selected = true;   

       } 
+0

DDL都必須是內部的UpdatePanel – skhurams

+0

我HVE添加,但沒有工作 –

+0

任何想法如何做THT –

回答

0

兩個下拉列表如下圖所示啓用視圖狀態爲true:

<asp:DropDownList ID="ddlState " runat="server" CssClass="csstextbox" Width="177px" EnableViewState=true>              </asp:DropDownList> 

它可能會解決你的問題。

感謝

+0

我已嘗試它但不是窩rking –

相關問題