【发布时间】:2015-08-25 13:46:09
【问题描述】:
我正在使用datatables 1.10.7。
我在这里引用的原始问题Question on datatables forum
我想禁用数据表自动执行的初始排序。
Datatables 拒绝收听
"aaSorting": []
或
"aaSorting": [[0,'desc'],[1,'desc']]
它按 ASC 顺序按表格中的第一列排序。阻止这种情况的唯一方法是使用
"bSort": false
但是,这会删除我桌子上的所有排序功能。
除了排序之外,我的表 100% 可用于其他所有操作。过滤、搜索、分页等工作 100%。当我设置
"bSort" : true
或者,当我忽略它时,因为我相信默认值是 true,我在警报消息中收到以下错误:
"error":"出现 SQL 错误:SQLSTATE[42000]: 语法错误或访问冲突:1064 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册以获取正确的语法在第 4 行的“ORDER BY column1 ASC LIMIT 0, 10”附近”
我尝试过使用和不使用 aaSorting,使用和不使用 bSort,并以各种方式将它们混合在一起。
有什么帮助吗?
PS,这是我的表定义:
oTable = $('#table_demo').DataTable(
{
"bSort": true,
"aaSorting": [[0,'desc'],[1,'desc']],
"bJQueryUI": true,
"bPaginate": true,
"bStateSave": true,
"processing": true,
"serverSide": true,
"sPaginationType": "full_numbers",
"ajax":
{
"url": "view_demo_remote.php",
"data":
{
"field1": "".$_SESSION['field1']."",
"field2": "".$_SESSION['field2']."",
"field3": "".$_SESSION['field3'].""
}
},
"columns":[
{ "bSortable": true, "data": "col1" },
{ "bSortable": true, "data": "col2" },
{ "bSortable": true, "data": "col3" },
{ "bSortable": false, "data": "col4" },
{ "bSortable": false, "data": "col5" },
{ "bSortable": false, "data": "col6" }
],
"fnCreatedRow": function( nRow, aData, iDataIndex )
{
$(nRow).attr("attrname",aData["col1"]);
},
"fnDrawCallback": function( oSettings )
{
}
});
编辑:
我也尝试从最新的 api 使用它,但没有成功:
"order": []
编辑:
这是我用于服务器端处理的 view_demo_remote.php:
<?php
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Easy set variables
*/
/* Array of database columns which should be read and sent back to DataTables. Use a space where
* you want to insert a non-database field (for example a counter or static image)
*/
session_start();
$table = 'table_demo';
$primaryKey = 'id';
$field1 = mysql_real_escape_string($_REQUEST["field1"]);
$field2 = mysql_real_escape_string($_REQUEST["field2"]);
$field3 = mysql_real_escape_string($_REQUEST["field3"]);
$columns = array(
array(
'db' => 'id',
'dt' => 'DT_RowId',
'formatter' => function( $d, $row )
{
return $d;
}
),
array( 'db' => 'name', 'dt' => 'col1' ),
array( 'db' => 'surname', 'dt' => 'col2' ),
array( 'db' => 'title', 'dt' => 'col3' ),
array( 'db' => 'date', 'dt' => 'col4' ),
array( 'db' => 'telephone', 'dt' => 'col5' ),
array( 'db' => 'email', 'dt' => 'col6' )
);
$sql_details = array(
'user' => DBUSER,
'pass' => DBUSERPASS,
'db' => DBNAME,
'host' => DBHOST
);
require( 'libraries/DataTables-1.10.7/examples/server_side/scripts/ssp.class.php' );
echo json_encode(SSP::complex( $_GET, $sql_details, $table, $primaryKey, $columns, "","name <>'' ORDER BY id DESC, datecreated DESC"));
【问题讨论】:
-
您使用的是哪个版本的数据表?要使用
"aaSorting": [],版本必须为 1.5 或更高版本。见this -
@BhushanKawadkar 如我帖子的第一行所述,我使用的是 1.10.7。这意味着实际上我应该使用 order 而不是 aasorting,但是,两者都不起作用。
-
@Janpan:你的数据表代码看起来很完美。我认为问题在于您的 view_demo_remote.php 文件。你能添加你的php代码吗?
-
@AmarKam 肯定会添加它。
-
只需尝试从 SSP::complex 函数中删除最后两个参数并检查数据表是否有效。
标签: jquery mysql sorting datatables