2013-07-16 17 views
0

Вот ситуация, у меня есть модальный всплывающий режим AJAX, внутри моей панели находится два (2) связанных выпадающего списка. Один для Континента, а другой для стран. Примером этого является то, когда пользователь выбирает Азию, выпадающий для стран должен иметь данные внутри. Вот мой код для модальных всплывали и панельМодальные всплывающие окна AJAX выходят при обновлении

<asp:ModalPopupExtender ID="Modalpopupextender1" runat="server" TargetControlID="ShowPopUpButton" 
     PopupControlID="pnlpopup" CancelControlID="CancelButton" BackgroundCssClass="modalBackground"> 
    </asp:ModalPopupExtender> 

    <asp:Panel ID="pnlpopup" runat="server" BackColor="White" Height="269px" Width="400px" 
     OnLoad="pnlpopup_Load"> 
    <tr> 
       <td align="right"> 
        Continent: 
       </td> 
       <td> 
        <asp:DropDownList ID="ContinentDownList" runat="server" 
         onselectedindexchanged="ContinentDropDownList_SelectedIndexChanged" AutoPostBack="true"> 
        </asp:DropDownList> 
       </td> 
      </tr> 
      <tr> 
       <td align="right"> 
        Country: 
       </td> 
       <td> 
        <asp:DropDownList ID="CountryDropDownList" runat="server"> 
        </asp:DropDownList> 
       </td> 
      </tr> 
     </asp:Panel> 

Теперь моя проблема, когда мои Модальные всплывали нагрузки, когда я выбираю континент, падение вниз для стран не делают нагрузку. Когда я вставил AutoPostBack = "true" в мой ContinentDropDown, модальная всплывающая подсказка обновится и выйдет. Я долгое время отлаживаю и знаю, как это исправить. Помогите!

вот мой код-за

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      LoadContinent(); 
      LoadCountry(); 
     } 
    } 

    public void LoadContinent() 
    { 
     using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString)) 
     { 

      using (SqlCommand com = new SqlCommand("Reader.usp_LoadContinentDropDownList", con)) 
      { 

       com.CommandType = CommandType.StoredProcedure; 
       con.Open(); 
       try 
       { 

        SqlDataReader dr = com.ExecuteReader(); 
        OwnerGroupDropDownList.DataSource = dr; 
        OwnerGroupDropDownList.DataTextField = "fld_Description"; 
        OwnerGroupDropDownList.DataValueField = "fld_ContinentID"; 

        ContinentDropDownList.DataBind(); 
       } 
       catch (SqlException) 
       { 
        Response.Write("<script>alert('The database has encountered an error. Please try again')</script>");     } 
       catch (Exception) 
       { 
        Response.Write("<script>alert('The database has encountered an error. Please try again')</script>");     } 
      } 

     } 
     LoadContinentDropDownList.Items.Insert(0, new ListItem("<Select Person Group>", "0")); 
    } 


     public void LoadCountry() 
    { 
     using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString)) 
     { 

      using (SqlCommand com = new SqlCommand("Reader.usp_LoadCountryDropDownList", con)) 
      { 


       com.CommandType = CommandType.StoredProcedure; 
       com.Parameters.Add(new SqlParameter("@fld_ContinentId", SqlDbType.Int)); 
       com.Parameters["@fld_ContinentId"].Value = ContinentDropDownList.SelectedValue; 
       con.Open(); 

       try 
       { 

        SqlDataReader dr = com.ExecuteReader(); 
        OwnerDropDownList.DataSource = dr; 
        OwnerDropDownList.DataTextField = "fld_Description"; 
        OwnerDropDownList.DataValueField = "fld_CountryID"; 

        CountryDownList.DataBind(); 
       } 
       catch (SqlException) 
       { 
        Response.Write("<script>alert('The database has encountered an error. Please try again')</script>");     } 
       catch (Exception) 
       { 
        Response.Write("<script>alert('The database has encountered an error. Please try again')</script>");     } 
      } 
     } 
     CountryDropDownList.Items.Insert(0, new ListItem("<Select Person>", "0")); 
    } 

     protected void ContinentDropDownList_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     LoadContinent(); 
     LoadCountry(); 
    } 

ответ

0

Вы пробовали положить pnlPopup панель внутри из UpdatePanel управления ASP.NET? Теперь, когда ваш раскрывающийся список делает обратную передачу, это будет частичная обратная передача, поскольку они оба находятся в пределах UpdatePanel, и он должен поддерживать видимость на всплывающей панели.

Отъезд Introduction to the UpdatePanel Control для получения дополнительной информации о создании и использовании UpdatePanel.

Когда вы устанавливаете элементы управления вне UpdatePanel, AutoPostback="true" вызвал полную обратную передачу, которая «сбрасывает» всплывающее окно на скрытое, поскольку это состояние по умолчанию для целевого элемента модального всплывающего расширителя.

+0

Я поставлю UpdatePanel INSIDE Panel? – user1954418

+0

Как я могу это сделать? – user1954418

+0

Вопрос: Где я могу разместить AsyncPostBackTrigger?/ – user1954418

Смежные вопросы