服务器端处理动态列

时间:2019-04-05 01:14:07

标签: c# datatables-1.10

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

我成功地在有静态列的情况下应用了服务器端处理。以前,我是在没有服务器端处理的情况下动态创建表的,但是现在负载太大,无法处理。因此,我已经转向使用服务器端处理配置的SQL分页,但是即使认为路径与最初加载表但具有一个静态列的路径相同时,它也不会加载表。由于使用该库已有多长时间,因此我正在使用1.10.15版,并且我担心很多表如果升级就无法使用。不确定是否可以解决问题。

JQuery数据表代码

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分页,它返回总记录数和仅数据的页面长度。如果我能在没有服务器端处理的情况下完成此任务,我也会对此感到满意。

1 个答案:

答案 0 :(得分:0)

我能够使用Priyank Panchal提供的信息,但可以根据建议修改建议中的解决方案。

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

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

  1. 首先,我仅使用一个字段来加载它,该字段使用Datatables默认消息“无可用记录”来标识其用途。
  2. 第二次加载在选择了客户端之后重新创建了网格,这决定了所需的字段,并以适当的结构重新加载。
  3. 最后,我通过另一个选择重新加载了网格,该选择定义了如何过滤数据。

与此同时,还需要隐藏第一列,这是通过Datatables配置的“ columnDefs”属性完成的。

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

这也是通过“ columnDefs”属性以及以下列方式引用该表来完成的:“ aTargets”:[oTable.columns()[0] .length-2]。这样就可以将其首先添加到最后一列,然后再添加到另一列。