User 5149409 Ответов: 1

Как сделать на jQuery DataTable в работу после UpdatePanel и обратной передачи


Я перепробовал все возможные решения для решения этой проблемы, но до сих пор не могу ее исправить,
Пожалуйста, помогите мне.

Я пытался использовать скрипт pageload, добавляя скрипт в contenttemplage, registerclient или startup script, используя pagre pre render, но ничего не работает

Это мой код. cs:

protected void GridView1_PreRender(object sender, EventArgs e)
      {
          this.BindGrid();

          if (GridView1.Rows.Count > 0)
          {
              //This replaces <td> with <th> and adds the scope attribute
              GridView1.UseAccessibleHeader = true;

              //This will add the <thead> and <tbody> elements
              GridView1.HeaderRow.TableSection = TableRowSection.TableHeader;

              //This adds the <tfoot> element.
              //Remove if you don't have a footer row
              GridView1.FooterRow.TableSection = TableRowSection.TableFooter;
          }

      }


и это мое asp.net код:
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
<script type="text/javascript">
    //On Page Load
    $(function () {
        $('.gvv').dataTable();
    });

    //On UpdatePanel Refresh
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    if (prm != null) {
        prm.add_endRequest(function (sender, e) {
            if (sender._postBackSettings.panelsToUpdate != null) {
                $('.gvv').dataTable();
            }
        });
    };
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
        <asp:ScriptManager runat="server" ID="ScriptManager1" />
<asp:UpdatePanel ID="upCrudGrid" runat="server">
            <ContentTemplate>
                <br />
                <asp:Button ID="btnAdd" runat="server" Text="Add New Record" CssClass="btn btn-info"

                    OnClick="btnAdd_Click" />
                <br />
                <br />
                <div class="box span12">
                    <div class="box-content">
                        <asp:GridView ID="GridView1" runat="server" HorizontalAlign="Center" OnRowCommand="GridView1_RowCommand"

                            AutoGenerateColumns="false" DataKeyNames="ContainerSizeID" CssClass="table table-striped table-bordered bootstrap-datatable datatable"

                            OnPreRender="GridView1_PreRender">
                            <Columns>
                                <asp:BoundField DataField="ContainerSizeID" HeaderText="ContainerSizeID" Visible="false" />
                                <asp:BoundField DataField="ContainerSize1" HeaderText="Container Size" />
                                <asp:TemplateField HeaderText="Actions">
                                    <ItemTemplate>
                                        <asp:LinkButton ID="btnViewDetail" runat="server" CommandName="detail" CssClass="btn btn-success"></asp:LinkButton>
                                        <asp:LinkButton ID="btnEdit" runat="server" CommandName="editRecord" CssClass="btn btn-info"></asp:LinkButton>
                                        <asp:LinkButton ID="btnDelete" runat="server" CommandName="deleteRecord" CssClass="btn btn-danger"></asp:LinkButton>
                                    </ItemTemplate>
                                </asp:TemplateField>
                            </Columns>
                        </asp:GridView>
                    </div>
                </div>
            </ContentTemplate>
            <Triggers>
            </Triggers>
        </asp:UpdatePanel>
</asp:Content>

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Вы отладили работу внутри события endRequest?

ShahidRiaz

Вы не назначили класс " gvv " вашему представлению сетки. Вот почему он не работает. Добавьте класс gvv в свой gridView, и он должен начать работать. Однако вам все равно нужно использовать enrequest, чтобы все работало правильно после частичной публикации страницы обратно

Uthixo

Привет, Мина, я занимаюсь той же проблемой, которую ты решила? Помоги мне. Извините за мой английский, я говорю только по-испански.

[no name]

У меня такая же проблема, вы нашли решение?

1 Ответов

Рейтинг:
2

ssbalakumar

код aspx:

<asp:updatepanel runat="server" id="ad">
                            <contenttemplate>
                                <div class="panel-heading">
                                    <asp:button id="btnAdd" runat="server" text="Add New User" onclick="Add" class="btn btn-success pull-right mr15"></asp:button></div>
                                <div class="panel-body">
                                <asp:gridview id="gvHRM" runat="server" autogeneratecolumns="False" datakeynames="intUserId" onprerender="gvHRM_PreRender" cssclass="table table-striped table-hover">
                                    <columns>
                                        <asp:boundfield datafield="varUserRole" headertext="User Roles" sortexpression="varUserRole"></asp:boundfield>
                                        <asp:boundfield datafield="varUserName" headertext="User Name" sortexpression="varUser">
                                        <asp:boundfield datafield="varPwd" headertext="Password" sortexpression="varPassword">
                                        <asp:templatefield headertext="Valid On"> 
                                        </asp:templatefield>
                                        <asp:templatefield headertext="">
                                            <itemtemplate>
                                                <asp:button id="btnDetail" runat="server" text="Details" onclick="Detail" commandargument="<%# Eval("intUserId") %>" <!--="" newline="" --="">                                                    class="btn btn-primary" />
                                            </asp:button></itemtemplate>
                                        </asp:templatefield>
                                        <asp:templatefield headertext="">
                                            <itemtemplate>
                                                <asp:button id="btnEdit" runat="server" text="Edit" onclick="Edit" commandargument="<%# Eval("intUserId") %>" <!--="" newline="" --="">                                                    class="btn btn-primary" />
                                            </asp:button></itemtemplate>
                                        </asp:templatefield>
                                        <asp:templatefield headertext="">
                                            <itemtemplate>
                                                <asp:button id="btnDelete" runat="server" text="Delete" onclick="Delete" commandargument="<%# Eval("intUserId") %>" <!--="" newline="" --="">                                                    class="btn btn-danger" />
                                            </asp:button></itemtemplate>
                                        </asp:templatefield>
                                    </asp:boundfield></asp:boundfield></columns>
                                </asp:gridview>
                                </div>
                            </contenttemplate>
                        </asp:updatepanel>


На странице cs, первый заголовок таблицы prerender, нижний колонтитул на странице init.

protected void gvHRM_PreRender(object sender, EventArgs e)
    {
        gvHRM.UseAccessibleHeader = false;
        gvHRM.HeaderRow.TableSection = TableRowSection.TableHeader;
        gvHRM.FooterRow.TableSection = TableRowSection.TableFooter;
        int CellCount = gvHRM.FooterRow.Cells.Count;
        gvHRM.FooterRow.Cells.Clear();
        gvHRM.FooterRow.Cells.Add(new TableCell());
        gvHRM.FooterRow.Cells[0].ColumnSpan = CellCount - 1;
        gvHRM.FooterRow.Cells[0].HorizontalAlign = HorizontalAlign.Right;
        gvHRM.FooterRow.Cells.Add(new TableCell());

        TableFooterRow tfr = new TableFooterRow();
        for (int i = 0; i < CellCount; i++)
        {
            tfr.Cells.Add(new TableCell());
        }
        gvHRM.FooterRow.Controls[1].Controls.Add(tfr);
    }



Идентификатор для gridview генерируется следующим образом
dashboard_gvHRM

так что мы используем dashboard_gvHRM в качестве идентификатора в файле js,

<blockquote class="quote"><div class="op">Quote:</div>$(function () {
    var table = $('#dashboard_gvHRM').DataTable({
        buttons: ['copy', 'csv', 'excel', 'pdf', 'print'],
        lengthMenu: [[5, 10, 25, 50, -1], [5, 10, 25, 50, "All"]],
        stateSave: true,
        dom: "<'row be-datatable-header'<'col-sm-3'l><'col-sm-4'B><'col-sm-5'f>><'row be-datatable-body'<'col-sm-12'tr>><'row be-datatable-footer'<'col-sm-5'i><'col-sm-7'p>>"
    });
    });</blockquote>


а для обновления панели рендеринга назовите ее как,
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm != null) {
    prm.add_endRequest(function (sender, e) {
        var table = $('#dashboard_gvHRM').DataTable({
            buttons: ['copy', 'csv', 'excel', 'pdf', 'print'],
            lengthMenu: [[5, 10, 25, 50, -1], [5, 10, 25, 50, "All"]],
            stateSave: true,
            dom: "<'row be-datatable-header'<'col-sm-3'l><'col-sm-4'B><'col-sm-5'f>><'row be-datatable-body'<'col-sm-12'tr>><'row be-datatable-footer'<'col-sm-5'i><'col-sm-7'p>>"
        });
    });