Ajax排序服务器端,是iSortCol_0考虑隐藏列

Ajax sorting server-side, is iSortCol_0 considering hiddend columns?

本文关键字:隐藏 iSortCol 排序 服务器端 Ajax      更新时间:2023-09-26

我不知道这是否是一个bug,但我有一个带有以下选项的数据表+ajax:

     "bServerSide": true,
     "sAjaxSource": url,
     "fnServerData": function (sSource, aoData, fnCallback) {
        jQuery.ajax({
           "dataType": 'json',
           "type": "POST",
           "url": sSource,
           "data": aoData,
           "success": fnCallback
        });
     },
     "sPaginationType": "bootstrap",
     "aoColumns": [
                    { "sName": "Id", "sType": 'numeric', "bVisible": false },
                    { "sName": "PostingDate", "sType": 'Date' },
                    { "sName": "Userid", "sType": 'string', "bVisible": false },
                    { "sName": "DisplayName" },
                    { "sName": "Description" },
                    { "sName": "MainTag" },
                    { "sName": "Tags" },
                    { "sName": "HowMuch" }
                ]

我有一个表单,用户可以在其中添加行,当他们提交时,我通过ajax调用将数据添加到数据库中,然后调用:jQuery('#mydatatable').dataTable().fnReloadAjax();

当用户单击按"MainTag"列对表进行排序时,我的服务器端ajax收到:

iSortCol_0 4
iSortingCols 1

所有的bPortable_#都在那里,正确地从0到7(我有8列,如上所示。

现在我的问题是iSortCol_0是误导性的,因为列是隐藏的,如果我不知道哪些列隐藏在服务器上,我会误解iSortCol:0=4按错误的列排序。

我可以实现一种变通方法,将显示或隐藏的列的信息发送到数据表的外部,但我觉得要么我做错了什么,要么我错过了在文档中找到问题的答案。

我不认为有一种自动的方法可以知道这一点,我要做的是使用fnServerParams()向服务器发送一个额外的参数(如本例所述),以通知服务器哪些列是隐藏的

    "fnServerParams": function ( aoData ) {
        aoData.push( { "name": "more_data", "value": "my_value" } );
    }