bjay tiamsic Ответов: 1

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 внутри модала, но модал пуст.

1 Ответов

Рейтинг:
6

bjay tiamsic

Он заработал, когда я поместил модал внутри панели обновления gridview