我在启用服务器端处理时创建了以下数据表:
$(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作为我的标识符)?是否可以在不刷新表格的情况下对客户端进行排序,并实际根据名称对其进行排序?
答案 0 :(得分:5)
使用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
答案 1 :(得分:3)
不幸的是,您必须自己处理服务器端的所有排序,分页和过滤。
我不知道您正在使用哪种服务器端技术,但数据表homepage在PHP中有一些示例。此外,还有一些使用ASP.NET MVC在服务器端使用数据表的包装器