gpt4 book ai didi

jquery - 无法使用数据表停止初始排序

转载 作者:行者123 更新时间:2023-11-29 01:39:07 25 4
gpt4 key购买 nike

我正在使用 datatables 1.10.7.

此处引用我的原始问题 Question on datatables forum

我想禁用数据表自动执行的初始排序。

Datatables 拒绝收听

"aaSorting": []

"aaSorting": [[0,'desc'],[1,'desc']]

它按 ASC 顺序按表中的第一列排序。阻止这种情况的唯一方法是使用

"bSort": false

然而,这会删除我表上的所有排序功能。

除了排序之外,我的表可以 100% 地处理其他所有事情。过滤、搜索、分页等工作 100%。当我设置

"bSort" : true

或者,当我忽略它时,因为我相信默认设置为真,我在警告消息中收到以下错误:

“错误”:“发生 SQL 错误:SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解要使用的正确语法靠近第 4 行的“ORDER BY column1 ASC LIMIT 0, 10”

我尝试过使用和不使用 aSorting,使用和不使用 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"));

最佳答案

使用 order指定不应该发生初始排序是完全可以的,请参见下面的示例:

$('#example').dataTable( {
"order": []
} );

调用 SSP::complex 的 PHP 代码中存在错误.这些函数需要以下参数

static function complex ( $request, $conn, $table, $primaryKey, $columns, $whereResult=null, $whereAll=null )

但您指定的是 "name <>'' ORDER BY id DESC, datecreated DESC"对于 $whereAll争论。

如果排序被禁用,这可能会起作用,但当它不是并且另一列被排序时,SSP类将使用两个 ORDER子句(一个来自 $whereAll 参数,另一个基于正在排序的列)导致 SQL 错误。

替换"name <>'' ORDER BY id DESC, datecreated DESC""name <>''"纠正这个问题。

关于jquery - 无法使用数据表停止初始排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30754110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com