DataTables ServerSide 排序不起作用 - mDataProp
Posted
技术标签:
【中文标题】DataTables ServerSide 排序不起作用 - mDataProp【英文标题】:DataTables ServerSide sort not working - mDataProp 【发布时间】:2012-08-19 05:30:17 【问题描述】:我创建了以下启用服务器端处理的数据表:
$(document).ready(function()
oTable = $('#example').dataTable(
"bServerSide": True,
"sAjaxSource": "source.php",
"aaSorting": [[0,"asc"]],
"aoColumns": [
"mDataProp" : "Name",
"sType": "string-case" ,
"mDataProp" : "Priority",
"sType": "string-case" ,
"mDataProp" : "Action",
"sType": "string-case"
]
);
);
名称、优先级和操作都是我想要排序的字符串。每当我单击列标题时,它只会重新加载表格。可能是一个愚蠢的问题,但我是否需要在服务器端进行所有排序(使用 iSortCol_0 和 sSortDir_0 作为我的标识符)?是否可以在不刷新表格的情况下对客户端进行排序,并根据名称对其进行排序?
【问题讨论】:
【参考方案1】:当使用bServerSide: true
时,DataTables 只会询问适合当前页面的数据。例如,当您进入下一页时,它将询问接下来的 10 条记录。 DataTables 无法在客户端进行排序,因为它不知道整个数据集。
如果您只是想从 ajax 源中提取整个数据集,您可以使用 sAjaxSource
选项。
$(document).ready(function()
$('#example').dataTable(
"bProcessing": true,
"sAjaxSource": '../ajax/sources/arrays.txt'
);
);
示例:http://datatables.net/release-datatables/examples/data_sources/ajax.html
【讨论】:
好的,这可能就是我要找的。我认为sAjaxSource
需要bServerSide
是正确的,但事实并非如此,我实际上并不需要服务器端处理。我现在遇到的问题是oSort[(sDataType ? sDataType : "string") + "-" aaSort[k][1]] is not a function
错误。任何想法为什么会这样?是因为我想对 JSON 进行排序吗?
我可以同时使用分页和排序吗??【参考方案2】:
不幸的是,您必须自己在服务器端处理所有排序、分页、过滤。
我不知道您使用的是哪种服务器端技术,但数据表homepage 在 PHP 中有一些示例。此外,还有一些包装器可以在 ASP.NET MVC 的服务器端使用数据表
【讨论】:
以上是关于DataTables ServerSide 排序不起作用 - mDataProp的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 DataTables (serverSide: true) 实现单个列过滤器?
ASP MVC 中的 Jquery dataTables serverSide
使用serverSide后,使用Ajax的DataTable运行不正常:true