服务器端处理动态列

Server Side Processing Dynamic Columns

服务器端路径提供 404 错误,其中路径与初始加载 table 时使用的路径相同。 table 被销毁,列被动态更改。

我在有静态列的地方成功应用了服务器端处理。我以前在没有服务器端处理的情况下动态构建了 table,但现在负载太大,无法处理。因此,我已经转移到具有服务器端处理配置的 SQL 分页,但它不会加载 table 即使我认为路径与我最初加载 table 时的路径相同但只有一个静态列。我使用的是 1.10.15 版本,因为我使用该库的时间很长,而且我担心如果升级,许多 table 将不再工作。不确定升级是否也能解决问题。

JQuery数据tables代码

var oTable = $("#InvoiceProcessing").DataTable({
                jQueryUI: true,
                pagingType: "full_numbers",
                responsive: true,
                "scrollX": true,
                "bServerSide": true,
                "sAjaxSource": "@Url.Action("GetInvoiceProcessing", "InvoiceProcessing")?clientId=" + cId + "&summaryDate=" + sumDate + "&processedDate=" + procDate + "&accountNumber=&invoiceNumber=",
                "bProcessing": true,
                "destroy": true,
                lengthMenu: [[25, 50, 100], [25, 50, 100]],
                "autoWidth": true
            });

C# 方法签名 - 此方法未命中

public async Task<ActionResult> GetInvoiceProcessing(Guid? clientId, DateTime? summaryDate, DateTime? processedDate, DataTableParamModel param, string accountNumber = "", string invoiceNumber = "")

我需要让分页反映查询的完整大小。我正在使用 sql 分页,其中 returns 总记录数和数据的页面长度。如果我能在没有服务器端处理的情况下完成这个,我也会很高兴。

我能够使用 Priyank Panchal 提供的信息,但修改了建议中的解决方案以满足我的需要。

我无法按原样使用它,因为我为网格生成的列是由数据动态驱动的,因此无法在加载前进行预定义。

为此,我必须以三种不同的方式加载网格。

  1. 首先,我只用一个字段加载它,该字段标识它与 Datatable 的默认消息 "No Available Records" 的用法。
  2. 第二次加载在选择客户端后重新创建网格,这决定了所需的字段,并使用正确的结构重新加载。
  3. 最后,我用定义数据过滤方式的用户的另一个选择重新加载网格。

此外,还需要隐藏第一列,我通过 Datatables 配置的 "columnDefs" 属性来实现。

最后一个要求是为编辑和删除按钮提供额外的字段。

这是通过 "columnDefs" 属性以及通过以下方式引用 table 实现的:"aTargets":[oTable.columns()[0]。长度 - 2]。这提供了将它首先添加到最后一列并在它之后添加另一个的能力。