2014-01-22 2 views
2

여러 업데이트 패널이 포함 된 페이지에서 작업하고 있습니다. 보통은 updatemode='conditional'으로 설정하지만, 업데이트 패널 중 하나에서 데이터를 업데이트하면 다른 모든 업데이트 패널을 업데이트해야합니다. 그렇지 않으면 방화 광구의 콘솔 창에 오류가 발생하고 페이지가 중단됩니다.이 문제를 해결하려면 어떻게해야합니까? 이 문제에 대한 자세한 내용은여러 업데이트 패널의 문제



은 위의 이미지는 두 개의 업데이트 패널을 간단한 페이지를 나타냅니다.
updatepanel1의 첫 번째 gridview는 updatemode='conditional'입니다.
나머지는 updatepanel2이고 updatemode='conditional'입니다.
시나리오는 다음과 같습니다. 사용자가 첫 번째 gridview에서 하루를 선택한 다음 jquery에서
__doPostBack('btnRefresh', '');을 사용하여 데이터를 두 번째 gridview에 채 웁니다.
참고 : id="btnRefresh"이있는 단추는 두 번째 업데이트 패널에 있습니다.
도와주세요.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Appointments.aspx.cs" Inherits="Appointments" %> 

     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">`enter code here` 
     <html xmlns="http://www.w3.org/1999/xhtml"> 
     <head runat="server"> 
      <title></title> 
      <script src="js/jquery-1.10.2.min.js" type="text/javascript"></script> 
      <script src="js/FQuery.js" type="text/javascript"></script> 
      <link href="style/style-en.css" rel="stylesheet" type="text/css" /> 
      <link href="style/ModalStyle-mini.css" rel="stylesheet" type="text/css" /> 
      <script type="text/javascript"> 
       var cells; 
       var isAdd = 1; 
       $(document).ready(function() { 
        DoWork(); 
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(requestHandler); 

       }); 
       function requestHandler(sender, args) { 
        DoWork(); 
       } 
       function DoWork() { 

        $("#gvDays .row").click(function() { 
         $("#gvDays .row").removeClass("darkblue"); 
         $(this).addClass("darkblue"); 
         $("#txtPeriod").val(""); 
         $("#txtDay_det_id").val(""); 
         cells = $(this).find("td"); 
         $("#txtDay_id").val($(cells[0]).text()); 
         __doPostBack('btnRefresh', ''); 
        }); 

        $("#gvDayDet .row").click(function() { 
         $("#gvDayDet .row").removeClass("darkblue"); 
         $(this).addClass("darkblue"); 
         cells = $(this).find("td"); 
         $("#txtDay_det_id").val($(cells[0]).text()); 
         $("#txtTimeFrom").val($(cells[2]).text()); 
         $("#txtTimeTo").val($(cells[3]).text()); 
         $("#txtPeriod").val($(cells[4]).text()); 
         __doPostBack('btnDaysDet', ''); 
        }); 
       }; 
      </script> 
     </head> 
     <body> 
      <form id="form1" runat="server"> 
      <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"> 
      </asp:ScriptManager> 

      <div id="catNewsTab"> 
       <asp:UpdatePanel runat="server" UpdateMode="Conditional"> 
        <ContentTemplate> 
       <asp:GridView ID="gvDays" runat="server" AutoGenerateColumns="false"> 
        <Columns> 
         <asp:BoundField DataField="day_id" HeaderText="Day No." /> 
         <asp:BoundField DataField="day_name" HeaderText="Day Name" /> 
        </Columns> 
        <HeaderStyle CssClass="gray" /> 
        <RowStyle CssClass="blue1 row" /> 
        <SelectedRowStyle CssClass="darkblue row" /> 
       </asp:GridView> 
        </ContentTemplate> 
       </asp:UpdatePanel> 
      </div> 
      <asp:UpdatePanel ID="upDaysDet" runat="server" UpdateMode="Conditional"> 
       <ContentTemplate> 
        <div> 
         <asp:Button ID="btnSaveDayDet" Text="Save" runat="server" OnClick="btnSaveDayDet_Click" /> 
         <asp:Button ID="btnUpdateDayDet" Text="Update" runat="server" OnClick="btnUpdateDayDet_Click" /> 
         <asp:Button ID="btnDeleteDayDet" Text="Delete" runat="server" OnClick="btnDeleteDayDet_Click" /> 
         <asp:TextBox ID="txtDay_id" runat="server" CssClass="hide" /> 
         <asp:Button ID="btnRefresh" runat="server" CssClass="hide" OnClick="btnRefresh_Click" /> 
    <asp:Button ID="btnDaysDet" runat="server" CssClass="hide" OnClick="btnDaysDet_Click" /> 
        </div> 
        <div style="height: 326px;" class="scroll scrollsmall"> 
         <asp:GridView ID="gvDayDet" runat="server" AutoGenerateColumns="false" EmptyDataText="No Results Found"> 
          <Columns> 
           <asp:BoundField DataField="day_det_id" HeaderText="day_det_id" /> 
           <asp:BoundField DataField="day_id" HeaderText="day_id" /> 
           <asp:BoundField DataField="time_from" HeaderText="time_from" /> 
           <asp:BoundField DataField="time_to" HeaderText="time_to" /> 
          </Columns> 
          <HeaderStyle CssClass="gray" /> 
          <RowStyle CssClass="blue1 row" /> 
          <SelectedRowStyle CssClass="darkblue row" /> 
          <EmptyDataRowStyle CssClass="empty" /> 
         </asp:GridView> 
        </div> 
       </ContentTemplate> 
      </asp:UpdatePanel> 
      </form> 
     </body> 
</html> 
+0

aspx 코드, 특히 업데이트 패널 영역을 표시 할 수 있습니까? –

답변

0

대신 뒤에있는 코드에서 이벤트를 '클릭'의 다시 게시를 위해 jQuery를 사용하는 이유가 있나요? '새로 고침'버튼이 두 번째 UpdatePanel에 있고 유일한 UpdatePanel에서 GridView를 업데이트하는 것이 유일한 목적이면 AsyncPostBackTrigger를 지정할 필요가 없습니다.

이 정보가 도움이되기를 바랍니다. 그렇지 않은 경우 샘플 코드를 사용하여 문제에 대해 더 자세히 파악할 수 있습니다.

+0

이유는 내가 할 수있는 다른 방법이 없어 –

+0

코드가 추가되었습니다 :) –

+0

거기에 다시 게시하거나 다른 방법은 무엇입니까? –

0

질문에 오해가 있었을 수도 있지만 코드 뒤에서 UpdatePanel1.Update()으로 전화 할 수 있습니다. 뒤에 코드 (된 .vb 파일)의 OnClick 이벤트에서 명시 적으로 각 업데이트 패널에 업데이 트를 호출 할 수 있어야한다 :

UpdatePanel1.Update() 
UpdatePanel2.Update() 

...

이 귀하의 질문에 대답합니까?

+0

아니오 나는 그렇게 생각하지 않는다 사용자가 행을 선택할 때 내가 선택한 행에 스타일 (색)을 지정하면이 행이 선택되었음을 알 수있다. 왜냐하면 내가 UpdatePanel1.Update()를 호출하면 이 선택되었음을 나타낸다. 그것은 내가 페이지가 특히 업데이 트 패널 이상의 거대한 데이터를 포함 할 때 페이지에 무거운 짐을 만드는 것 말고는 사라질 것입니다 –

관련 문제