【问题标题】:DataTables: search all columns when server-sideDataTables:在服务器端搜索所有列
【发布时间】:2011-12-28 13:29:59
【问题描述】:

我将IgnitedDatatables(CodeIgniter 库)用于DataTables。该表生成没有问题,但如果我搜索/过滤它一次只能过滤一列。如果我将“bServerSide”设置为 false,它可以工作,但我会失去服务器端功能。

在示例中,这个是有效的: http://datatables.net/release-datatables/examples/ajax/custom_data_property.html

虽然这不是(服务器端): http://datatables.net/release-datatables/examples/data_sources/server_side.html

这在服务器端运行时不能实现吗?

这是我的 JSON 响应(缩短并替换数据):

{"sEcho":0,"iTotalRecords":45438,"iTotalDisplayRecords":45438,"aaData":[["abc","12345","example@example.com","","","2010-01-27 22:31:10","Edit<\/a> Delete<\/a>"],["abc2"," test123","test@test.com","","","2008-06-15 22:09:33","Edit<\/a> Delete<\/a>"]],"sColumns":"fname,lname,email,phone,cellphone,created,edit"}

JavaScript 代码:

$("#members").dataTable( {
    "bProcessing": true,
    "bServerSide": true,
    'sAjaxSource': '<?php echo base_url();?>members/listener',
    "fnServerData": function ( sSource, aoData, fnCallback ) {
        $.ajax( {
            "dataType": 'json',
            "type": 'POST',
            "url": sSource,
            "data": aoData,
            "success": fnCallback
        } );
    },
    "bLengthChange": false,
    "aaSorting": [[ 0, "asc" ]],
    "iDisplayLength": 15,
    "sPaginationType": "full_numbers",
    "bAutoWidth": false,
    "aoColumnDefs": [ 
        { "sName": "fname", "aTargets": [ 0 ] },
        { "sName": "lname", "aTargets": [ 1 ] },
        { "sName": "email", "aTargets": [ 2 ] },
        { "sName": "phone", "sWidth": "80px", "aTargets": [ 3 ] },
        { "sName": "cellphone", "sWidth": "100px", "aTargets": [ 4 ] },
        { "sName": "created", "sWidth": "120px", "aTargets": [ 5 ] },
        { "bSortable": false, "sName": "edit", "sWidth": "115px",   "aTargets": [ 6 ] }
    ]
});

谢谢!

【问题讨论】:

    标签: javascript jquery json datatables


    【解决方案1】:

    好吧,如果您过滤服务器端的问题是您正在通过 SQL 查询进行过滤,这就是您发布的example 上所写的内容;

    • 过滤
    • 注意这与内置的 DataTables 过滤不匹配
    • 在任何字段上逐字逐句。这里可以做,但要注意效率
    • 在非常大的表上,并且 MySQL 的正则表达式功能非常有限

    基本上你可以做你想做的事(正则表达式匹配所有列),但它会破坏性能服务器端。

    我通常做的是为每一列提供一个过滤器,我需要过滤。

    【讨论】:

      猜你喜欢
      • 2016-02-11
      • 2017-06-16
      • 2017-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多