온라인으로 답을 찾았지만 답변을 찾지 못했습니다. 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">×</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 clicnking the seccond time
이제 두 번 클릭하면 데이터가 GridView에 표시됩니다.
첫 번째 클릭부터 GridView에 표시되는 데이터가 필요합니다.
답변을 주셔서 감사합니다. OnClientClick 끝까지하지만 여전히 두 번 클릭하여 gridview 업데이트해야합니다. –
나는 타이밍상의 문제라고 생각한다 ... 페이지의 현재 HTML을 가진 모달 (데이터를 포함하지 않음)을 처음 클릭 할 때, 배경 뒤에서 포스트 백이 발생할 수 있지만, 당신은 그렇지 않다. 두 번째 버튼을 누를 때까지 "보게"하십시오. 첫 번째 LinkButton에서'data-toggle'과'data-target'을 제거하고'UpdatePanel'을 위해'endRequest' 함수를 사용합니다 (http://stackoverflow.com/questions/5269912/begin-and-end 참조). -request-in-updatepanel-using-jquery). 그 함수는 모달을 보여줄 것이다 :'$ ('# showLog'). modal();'. 희망은 도움이되고 올바른 길로 인도합니다. – scolja
BTW - 위에서 언급 한 방법은 두 개의'LinkButton' 솔루션을 없애고 첫 번째'LinkButton'은 원하는대로 다시 게시 할 수 있습니다 ... 모달 설정 및 표시는 endRequest 메소드에서 처리됩니다 . – scolja