数据表显示/隐藏列干扰列过滤

时间:2014-06-25 13:46:58

标签: javascript jquery datatables

我尝试使用列过滤和显示/隐藏功能设置数据表。当列的选择按照0,1,2,3,4,5这样的有序方式时,它似乎工作得很好,但是当以0,1,2等无序方式选择列时,Individual列过滤器与常用搜索功能混合在一起, 3,6。在这种情况下,当搜索列过滤器6时,它的行为类似于常见的搜索功能。

在检查fire bug列中的请求时,过滤器6的值在sSearch而不是sSearch_6中传递。这是我的代码:

$(document).ready(function () {

  var table=  $("#data_table").dataTable({
        "bDestroy":true,
        "bStateSave": true,
        "aaSorting": [[1, "asc"]], 
        "bProcessing": false,
        "bServerSide": true,
        "sAjaxSource": "/queryDb",
        "bJQueryUI": true,
        "bAutoWidth": false,
        "bFilter":true,
        "bLengthChange": true,
        "bPaginate": true,
        "bSort": true,
        "iDisplayLength": 10,
        "bInfo": true,
        "sPaginationType": "full_numbers", 
        "fnDrawCallback" : function() {

    }

    }).columnFilter({
        sPlaceHolder: "head:after",
        aoColumns: [ { type: "text" },
                     { type: "text" },
                     { type: "text" },
                     { type: "text" },
                     { type: "text" },
                     { type: "text" },
                     { type: "text" },
                     { type: "text" },
                     { type: "text" },
                     { type: "text" }
                     ]
                     });
                     }); 

显示/隐藏功能:

function fnShow(iCol)
{
    var oTable = $("#data_table").dataTable();
    var bVis = oTable.fnSettings().aoColumns[iCol].bVisible;
    oTable.fnSetColumnVis( iCol, true );
}
function fnHide(iCol2)
{
    var oTable2 = $("#data_table").dataTable();
    var bVis = oTable2.fnSettings().aoColumns[iCol2].bVisible;
    oTable2.fnSetColumnVis( iCol2, false );
}

请帮我解决这个错误。

1 个答案:

答案 0 :(得分:0)

看起来像列过滤器插件是错误的。我删除了列过滤器插件并为每列创建了自定义搜索输入,并使用fnFilter()在服务器端ajax请求中附加了这些值。

像,     table.fnFilter("&#34);     table.fnFilter(" val0",0);     table.fnFilter(" VAL1",1); 等等。