2016-08-22 2 views
0

온라인으로 답을 찾았지만 답변을 찾지 못했습니다. BootPrap 모달에 세부 사항을 표시하기 위해 UpdatePanel과 Linkbutton 열 안에 GridView가 있습니다. 사용자가 LinkButton을 클릭하면 OnClick 이벤트가 발생하지 않기 때문에 다른 LinkButton의 클릭만으로 OnClick 이벤트를 발생시키는 Javascript에서 fuction을 만들었습니다.UpdatePanel 내의 ASP.NET GridView가 두 번째 클릭까지 업데이트되지 않습니다.

이제 제대로 작동하지만 두 번째 클릭까지는 아무 것도 변경되지 않습니다.

ASP.NET 코드

<asp:UpdatePanel ID="upContent" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <table align="center"> 
      <tr> 
       <td> 
        <asp:GridView ID="grvOrderTracing" runat="server" EmptyDataText="There are no pending orders for the selected date" AutoGenerateColumns="False" DataSourceID="SqlDTSgetOrdersByDate" CssClass="table table-striped table-hover table-responsive" GridLines="None" AllowPaging="True" PageSize="8" > 
         <PagerStyle CssClass="pagination-ys" /> 
         <Columns> 
          <asp:BoundField DataField="Order ID" HeaderText="Order ID" SortExpression="Order ID" > 
           <ControlStyle CssClass="hide" /> 
           <FooterStyle CssClass="hide" /> 
           <HeaderStyle CssClass="hide" /> 
           <ItemStyle CssClass="hide" /> 
          </asp:BoundField> 
          <asp:TemplateField HeaderText="Order Number"> 
           <ItemTemplate> 
            <asp:LinkButton ID="lbtShowMoreInfo" runat="server" data-toggle="modal" data-target="#showLog" CommandName="OrderID" Text='<%# Bind("[Order Number]") %>' style="cursor: pointer; font-weight: bold;" OnClientClick="ActivityLog(this);"> 
            </asp:LinkButton> 
            <asp:LinkButton ID="lbtActivityLog" runat="server" CommandName="OrderID" CssClass="hide" OnClick="ActivityLog_Click" Text='<%# Bind("[Order ID]") %>' ></asp:LinkButton> 
           </ItemTemplate> 
          </asp:TemplateField> 
         </Columns> 
        </asp:GridView> 
        <asp:SqlDataSource ID="SqlDTSgetOrdersByDate" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" SelectCommand="sp_getOrdersByDate" SelectCommandType="StoredProcedure" CancelSelectOnNullParameter="False"> 
         <SelectParameters> 
          <asp:Parameter DefaultValue="0" Name="filter" Type="Int32" /> 
          <asp:Parameter Name="startDate" Type="String" /> 
          <asp:Parameter Name="endDate" Type="String" /> 
         </SelectParameters> 
        </asp:SqlDataSource> 
       </td> 
      </tr> 
     </table> 
    </ContentTemplate> 
</asp:UpdatePanel> 

<asp:UpdatePanel ID="upLog" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <!-- Modal --> 
     <div id="showLog" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-backdrop="static" data-keyboard="false"> 
      <div class="modal-dialog modal-lg" > 
       <div class="modal-content"> 
        <div class="modal-header"> 
         <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
         <h4 class="modal-title" id="myModalLabel">Orden Log</h4> 
        </div> 
        <div class="modal-body"> 
         <asp:GridView ID="grvLog" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDTSgetTracing" CssClass="table table-striped table-hover table-responsive" GridLines="None" > 
          <Columns> 
           <asp:BoundField DataField="Movement Date" HeaderText="Movement Date" SortExpression="Movement Date" ReadOnly="true" DataFormatString="{0:dd/MM/yyyy HH:mm}" /> 
           <asp:BoundField DataField="User" HeaderText="User" SortExpression="User" ReadOnly="true" /> 
           <asp:BoundField DataField="Action" HeaderText="Action" SortExpression="Action" ReadOnly="true" /> 
           <asp:BoundField DataField="Comments" HeaderText="Comments" SortExpression="Comments"/> 
          </Columns> 
         </asp:GridView> 
         <asp:SqlDataSource ID="SqlDTSgetTracing" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" SelectCommand="sp_getTracing" SelectCommandType="StoredProcedure"> 
          <SelectParameters> 
           <asp:Parameter DefaultValue="0" Name="ord_id" Type="Int32"/> 
          </SelectParameters> 
         </asp:SqlDataSource> 
        </div> 
       </div> 
      </div> 
     </div> 
    </ContentTemplate> 
</asp:UpdatePanel> 

자바 스크립트 코드

function ActivityLog(lbt) { 
    lbt.nextSibling.nextSibling.click(); //Find the other LinkButton and click 
} 

C# 코드

protected void ActivityLog_Click(object sender, EventArgs e) 
{ 
    SqlDTSgetTracing.SelectParameters["ord_id"].DefaultValue = ((LinkButton)sender).Text; 
    SqlDTSgetTracing.Select(DataSourceSelectArguments.Empty); 
    grvLog.DataBind(); 
    upLog.Update(); 
} 

When clicking the first time

When clicnking the seccond time

이제 두 번 클릭하면 데이터가 GridView에 표시됩니다.

첫 번째 클릭부터 GridView에 표시되는 데이터가 필요합니다.

답변

1

OnClientClick의 끝에 return false;을 추가하여 해당 컨트롤의 클릭 이벤트 (ASP.NET에서 코딩 됨)가 실행되는 것을 방지 할 수 있습니다. 그러면 LinkButton에 대해서만 다시 게시 할 수 있습니다.

OnClientClick="ActivityLog(this);return false;" 

두 번 클릭 할 필요가 없으면 해결할 지 모르겠지만 어쩌면!

+0

답변을 주셔서 감사합니다. OnClientClick 끝까지하지만 여전히 두 번 클릭하여 gridview 업데이트해야합니다. –

+0

나는 타이밍상의 문제라고 생각한다 ... 페이지의 현재 HTML을 가진 모달 (데이터를 포함하지 않음)을 처음 클릭 할 때, 배경 뒤에서 포스트 백이 발생할 수 있지만, 당신은 그렇지 않다. 두 번째 버튼을 누를 때까지 "보게"하십시오. 첫 번째 LinkButton에서'data-toggle'과'data-target'을 제거하고'UpdatePanel'을 위해'endRequest' 함수를 사용합니다 (http://stackoverflow.com/questions/5269912/begin-and-end 참조). -request-in-updatepanel-using-jquery). 그 함수는 모달을 보여줄 것이다 :'$ ('# showLog'). modal();'. 희망은 도움이되고 올바른 길로 인도합니다. – scolja

+0

BTW - 위에서 언급 한 방법은 두 개의'LinkButton' 솔루션을 없애고 첫 번째'LinkButton'은 원하는대로 다시 게시 할 수 있습니다 ... 모달 설정 및 표시는 endRequest 메소드에서 처리됩니다 . – scolja

관련 문제