2017-12-23 29 views
1

일부 데이터를 데이터베이스에 쓴 다음 업데이트 된 데이터로 Gridview를 업데이트하려고합니다. 다른 내부에는 중첩 된 격자보기가 있습니다. 또한 두 개의 업데이트 패널이 있습니다. 자식 그리드 뷰는 부모 updatepanel 안에 있습니다. 부모 updatepanel의 끝에 자식 업데이트 패널이 시작됩니다. 버튼이 있습니다.aspx 업데이트 패널이 업데이트되지 않음 - Gridview가 포함되었습니다.

클릭시 DB 찾기, 컨트롤 찾기를 사용하여 동적 그리드 뷰를 찾아서 데이터 소스에 다시 바인딩 할 수 있습니다. 자식 updatepanel을 찾을 수 있으며 update 메소드를 사용하고 있습니다. 하지만 그것은 업데이 트되지 않습니다. 오류가 없습니다.

<ItemTemplate> 
    <img alt="" runat="server" style="cursor: pointer" src="images/plus.png" /> 
    <asp:UpdatePanel ID="pnlOrders" runat="server" Style="display: none" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <asp:GridView ID="gvOrders" runat="server" AutoGenerateColumns="false" CssClass="ChildGrid"> 
     <Columns> 
      <asp:BoundField ItemStyle-Width="150px" DataField="OrderId" HeaderText="Contact Name" /> 
      <asp:BoundField ItemStyle-Width="150px" DataField="OrderDate" HeaderText="City" /> 
     </Columns> 
     </asp:GridView> 
     <asp:UpdatePanel id="pnChild" runat="server" CssClass="ChildGrid" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <asp:TextBox ID="TextBox1" runat="server" Text=""></asp:TextBox> 
      <asp:TextBox ID="TextBox2" runat="server" Text='<%# Eval("CustomerID") %>'></asp:TextBox> 
      <asp:Button ID="Button1" runat="server" Text="Button" OnClick="MyButtonClick" /> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
    </ContentTemplate> 
    </asp:UpdatePanel> 
</ItemTemplate> 

C 샤프 코드 :

GridView gvOrder = gvr.FindControl("gvOrders") as GridView; 
gvOrder.DataSource = GetData(string.Format("select top 10 * from Orders where CustomerId='{0}'", cID)); 
gvOrder.DataBind(); 
UpdatePanel uPanel = gvr.FindControl("pnlOrders") as UpdatePanel; 
uPanel.Update(); 

HTML 출력 :

<table class="Grid" cellspacing="0" rules="all" border="1" id="gvCustomers" style="border-collapse:collapse;"> 
    <tr> 
     <th scope="col">&nbsp;</th><th scope="col">Contact Name</th><th scope="col">Contact Name</th><th scope="col">City</th> 
    </tr><tr> 
     <td> 

        <img src="images/plus.png" alt="" style="cursor: pointer" /> 
        <div id="gvCustomers_pnlOrders_0"> 

         <div> 
       <table class="ChildGrid" cellspacing="0" rules="all" border="1" id="gvCustomers_gvOrders_0" style="border-collapse:collapse;"> 
        <tr> 
         <th scope="col">Contact Name</th><th scope="col">City</th> 
        </tr><tr> 
         <td style="width:150px;">1</td><td style="width:150px;">19-05-18</td> 
        </tr><tr> 
         <td style="width:150px;">12</td><td style="width:150px;">25-05-18</td> 

        </tr> 
       </table> 
      </div> 
      <div id="gvCustomers_pnChild_0" CssClass="ChildGrid"> 

      <input name="gvCustomers$ctl02$TextBox1" type="text" id="gvCustomers_TextBox1_0" /> 
      <input name="gvCustomers$ctl02$TextBox2" type="text" value="1" id="gvCustomers_TextBox2_0" /> 
      <input type="submit" name="gvCustomers$ctl02$Button1" value="Button" id="gvCustomers_Button1_0" /> 

      </div> 

는 HTML 레이아웃이 잘못 보이지만, 내가 한 행의 출력을 게시 때문입니다. 레이아웃 문제는 없습니다.

답변

0

UpdateMode="Conditional"을 사용할 때 ChildrenAsTriggers="False"을 설정해야합니다.

그리고 manually trigger 당신의 버튼 (들) 또는 다른 컨트롤 이벤트는 AsyncPostBackTrigger 등 :

<Triggers> 
    <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" /> 
</Triggers> 

수동 yourupdatepanel.Update()로 updatepanel를 업데이트

UpdatePanel uPanel = gvr.FindControl("pnlOrders") as UpdatePanel; 
uPanel.Update(); 
+0

감사합니다. 나는 그걸 시도했지만 아직 아무것도하지 않았다. 전체 사이트 주위에 업데이트 패널을 래핑하면 작동하지만 아직 그 옵션을 사용하지 않으려 고합니다. – SANM2009

0

문제는 중첩 함께 할 듯 패널. 나는 자식 updatepanel을 패널로 바꿨고, 모두 트리거 선언을하지 않아도 작동하는 것 같습니다.