Linkbutton в grid (внутри updatepanel) не связывает сетку в модальном bootstrap ASP.NET с#
Привет,
У меня возникла проблема с привязкой gridview внутри модала, привязка происходит в событии OnClick linkbutton в заголовке другого gridview.
Вот мой первый gridview с кнопкой linkbutton (lnkHistory) в заголовке
<asp:UpdatePanel ID="UpdatePanel2" runat="server"> <ContentTemplate> <div class="tab-content"> <div role="tabpanel" class="tab-pane active" id="currentsa"> <div class="row"> <div class="col-sm-12"> <asp:GridView runat="server" ID="gvSalaryAdvance" Width="100%" CssClass="table table-hover" AutoGenerateColumns="false" OnRowCreated="gvSalaryAdvance_RowCreated"> <Columns> <asp:TemplateField ItemStyle-Width="15%"> <HeaderTemplate> <asp:Label ID="lblStatus" runat="server" Text="Status"></asp:Label> <asp:LinkButton ID="lnkHistory" runat="server" OnClick="lnkHistory_Click"><span class="glyphicon glyphicon-exclamation-sign"></span></asp:LinkButton> </HeaderTemplate> <ItemTemplate> <asp:Label ID="lblStatus" runat="server" Text='<%# Eval("StatusStr") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </div> </div> </ContentTemplate> </asp:UpdatePanel>
Вот gridview, который я связываю после нажатия кнопки lnkHistory
div id="modalSAHistory" class="modal fade bd-example-modal-lg" tabindex="-1" role="dialog" data-focus="true" aria-labelledby="myLargeModalLabel" style="margin-top: 80px" aria-hidden="true"> <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">History</h4> </div> <div class="modal-body"> <div class="row"> <div class="form-group"> <div class="col-sm-12"> <asp:GridView runat="server" ID="gvHistory" Width="100%" CssClass="table table-striped table-bordered table-hover" AutoGenerateColumns="false"> <Columns> <asp:TemplateField HeaderText="Status" ItemStyle-Width="15%"> <ItemTemplate> <asp:Label ID="lblStatus" runat="server" Text='<%# Eval("StatusStr") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Marked By" ItemStyle-Width="25%"> <ItemTemplate> <asp:Label ID="lblModifiedBy" runat="server" Text='<%# Eval("ModifiedBy") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </div> </div> </div> </div> </div> </div> </div>
Вот событие OnClick lnkHistory внутри первого gridview
protected void lnkHistory_Click(object sender, EventArgs e) { string said = ""; DataTable dt = new DataTable(); if (gvSalaryAdvance.Rows.Count > 0) { foreach (GridViewRow gvRow in gvSalaryAdvance.Rows) { if (gvRow.RowType == DataControlRowType.DataRow) { HiddenField hdnSAID = (HiddenField)gvRow.FindControl("hdnSAID"); said = hdnSAID.Value; } } string[] param = { "@SA_ID" }; string[] val = { said }; dt = SharedClass.getTableParam("[sp_SA_getSalaryAdvanceLogs]", param, val); gvHistory.DataSource = dt; gvHistory.DataBind(); } ScriptManager.RegisterClientScriptBlock(Page, this.GetType(), "AA", "$('#modalSAHistory').modal('show');", true); }
Что я уже пробовал:
Я также установил lnkHistory как postbacktrigger, используя событие RowCreated gridview
protected void gvSalaryAdvance_RowCreated(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.Header) { ScriptManager scriptMan = ScriptManager.GetCurrent(this); LinkButton btn = e.Row.FindControl("lnkHistory") as LinkButton; if (btn != null) { scriptMan.RegisterAsyncPostBackControl(btn); } } }
Модал открывается, но в нем нет данных, я попытался поставить точку останова на коде привязки. Он извлекает данные, помещает их в datatable и связывает с gridview внутри модала, но модал пуст.