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

dataTables 使用方式

使用serverSide后,使用Ajax的DataTable运行不正常:true

使用格式化数据进行渲染,使用 DataTables.net 中的原始数据进行排序

当我从 ajax 发送数据时,如何在 jQuery 中使用 DataTables 对列进行排序?