jQuery Datatables-如何更改服务器端排序顺序



我目前正在使用Datatables 的服务器端SQLite版本

http://www.abrandao.com/2014/03/server-side-datatables-with-sqlite-or-mysql-via-pdo/

正如你在他们的在线演示中看到的,它有一个奇怪的排序顺序

http://www.abrandao.com/lab/datatable_pdo/client.php

A
B
C
a
b
c

是否可以在没有辅助单元格的情况下将其更改为此?

a
A
b
B
c
C

A
a
B
b
C
c

(未测试(示例sippets

您可以从示例站点扩展底层数据库查询/请求(请参阅服务器端信息(

现有查询:


$pdo = new ServerDataPDO($db_dsn,$db_user,$db_pass,$d['sql'],$d['table'],$d['idxcol']);
$result=$pdo->query_datatables(); //now return the JSON Requested data */
echo $result;

需要查询扩展


$pdo->query("SELECT * FROM movie_table movie ORDER BY movie COLLATE NOCASE ASC");

如果你查看网站底部的代码(你需要下载zip文件(,你可以在serverdatapdo.php的第273行找到函数"query_datables(("。在这个函数中,你可以看到所有定义的基本查询。

在函数的开头,您会发现变量"sOrder"。因此,我想,在您的情况下,您必须更改"sOrder"的定义才能更改SQL查询。

现有代码

$sOrder .= "`".$this->aColumns[ intval( $_GET['iSortCol_'.$i] ) ]."` ".
($_GET['sSortDir_'.$i]==='asc' ? 'asc' : 'desc') .", ";

建议的代码


$sOrder .= "`".$this->aColumns[ intval( $_GET['iSortCol_'.$i] ) ]."` ".
($_GET['sSortDir_'.$i]==='asc' ? 'COLLATE NOCASE ASC' : 'COLLATE NOCASE desc') .", ";

编辑

否则,您还可以处理php代码中的整个对象(排序等(,这些对象是从数据库中接收的。但在这种情况下,您的服务器或多或少会做两次相同的工作。:(

最新更新