c# - 服务器端处理动态列
问题描述
服务器端路径提供 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 分页,它返回总记录数和数据的页面长度。如果我可以在没有服务器端处理的情况下完成此操作,我也会对此感到满意。
解决方案
我能够使用 Priyank Panchal 提供的信息,但修改了建议中的解决方案以满足我的需求。
我无法按原样使用它,因为我为网格生成的列是由数据动态驱动的,因此在加载之前无法预定义。
为此,我必须以三种不同的方式加载网格。
- 首先,我仅使用一个字段来加载它,该字段使用 Datatables 默认消息“无可用记录”来标识它的使用情况。
- 第二次加载在选择客户端后重新创建网格,这决定了所需的字段,并以正确的结构重新加载。
- 最后,我使用用户定义数据过滤方式的另一个选择重新加载网格。
有了这个,还需要隐藏第一列,我通过 Datatables 配置的“columnDefs”属性来做到这一点。
最后一个要求是为编辑和删除按钮提供附加字段。
这是通过“columnDefs”属性以及以下列方式引用表来完成的:“aTargets”:[oTable.columns()[0].length - 2]。这提供了将它首先添加到最后一列并在其后添加另一个的能力。
推荐阅读
- java - 我应该避免使用注释吗?
- flutter - 无法使用谷歌登录,出现错误`sign_in_failed`
- javascript - 在 Vue 中加载 DOM 之前运行一个方法
- java - Java TreeSet - 如何有效地插入然后轮询直接邻居?
- excel - 从段落中查找单个单词
- flyway - Flyway 是否支持 InterSystems 缓存数据库迁移?
- python - 如果是或否问题的答案是否定的,我将无法回到第一个问题
- mql5 - 我可以用什么代替 mql5 中的 TimeSeconds()?
- pandas - 将测试集中的列分成箱的正确方法是什么?
- sql - 在 MS 访问中运行缓慢的查询