2012-05-16 4 views
1

ddlCountry dropdownlist 및 ddlState 드롭 다운 목록이 있습니다. ddlState가 업데이트 패널에 있습니다. 국가 선택시 ddlCountry의 selectedindexchanged 이벤트를 사용하여 주를 채 웁니다. 바인딩 후 두 개의 드롭 다운에 시작 값 "-1"을 추가했습니다. 드롭 다운리스트 내용이 [선택] 값 "-1"이면 경고를 표시하고 false를 반환하면 Javascript를 체크인합니다.DropDownStart (ddlState) 값 손실 AsyncPostBackTrigger after AsyncPostBackTrigger after update 패널

그러나 ddlCountry 및 ddlState에 대한 유효성 검사는 Ajax 업데이트 패널이 실행되고 유효성 검사가 실패한 후 값이 "공백"이됩니다.

어떻게 해결해야합니까? AsyncPostBackTrigger 후에 ddlState 값이 손실되는 이유를 모르겠습니다.

//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 내가 추가 HVE updatepanel – skhurams

+0

내부에하지만 어떻게 THT –

+0

모든 아이디어를 작동하지 있어야 그것을 경우 "-1"다음 경고를 생성합니다. 자바 스크립트에서 값을 확인하면 빈 값을 보여줍니다. "...하지만 ddlState 값에 Postbacktrigger를 사용하면 javascript가 작동하고 모든 작업이 정상적으로 수행되지만 페이지의 부드러움 비동기를 사용하여 Postbacktrigger보다 낫다 ... thits yi use async trigger ... 내 주요 문제는 비동기 트리거를 사용할 때 ddlState 값이 자바 스크립트에 들어 가지 않지만 포스트 백 트리거 값을 사용하는 중입니다 ... –

답변

0

다음과 같은 두 드롭 다운 목록을 true로 viewstate가 사용 :

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

그것은 당신의 문제를 해결할 수 있습니다.

감사

+0

시도했습니다. 그것은 아니지만 우와. 울타리 –