2012-08-23 60 views
2

我与服务器端的处理创建了以下数据表启用:数据表服务器端排序不工作 - mDataProp

$(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" } 
     ] 
    }); 
}); 

名称,优先级和行动是我想排序的所有字符串。每当我点击列标题,它什么也不做,只是重新加载表格。可能是一个愚蠢的问题,但我需要做我所有的排序serverside(使用iSortCol_0和sSortDir_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

+0

好吧,这可能是我所期待的。我以为'sAjaxSource'需要'bServerSide'为true,但事实并非如此,我实际上并不需要ServerSide处理。我现在遇到的问题是'oSort [(sDataType?sDataType:“string”)+“ - ”aaSort [k] [1]]不是函数错误。任何想法,为什么这是?是否因为我想对JSON进行排序? –

+0

没关系,我删除了sType,它工作正常,谢谢! –

+0

我可以同时使用分页和排序? – lucifer

3

不幸的是,您必须自己处理服务器端的所有排序,分页和过滤。

我不知道您正在使用哪种服务器端技术,但数据表homepage在PHP中有一些示例。此外,还有一些使用ASP.NET MVC的服务器端数据表包装的包装器