DataTables服务器端排序不起作用 - mDataProp

时间:2012-08-23 16:19:19

标签: jquery ajax sorting datatables server-side

我在启用服务器端处理时创建了以下数据表:

$(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作为我的标识符)?是否可以在不刷新表格的情况下对客户端进行排序,并实际根据名称对其进行排序?

2 个答案:

答案 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在服务器端使用数据表的包装器