如何在初始化中过滤jquery数据表

时间:2013-09-02 05:50:04

标签: javascript jquery jquery-datatables

我想问一下在启动时是否有办法过滤数据表服务器端?

我尝试过类似这样的代码:

function listTable(arg1, param2, value3) {
var searchTbl = $("#tblsearch").dataTable({
                    "bRetrieve": true,
                    "bProcessing": true,
                    "bServerSide": true,                   
                    "sAjaxSource": "server-side.php",
                    "bPaginate": false,
                    "bLengthChange": false,
                    "bFilter": false,
                    "bSort": true,
                    "bInfo": false,
                    "bAutoWidth": false
                });

searchTbl.filter(arg1, param2, value3);
searchTbl.fnDraw();
}

但它不起作用。

2 个答案:

答案 0 :(得分:5)

Salute brod,

正如我所理解的那样。您正尝试过滤记录,以便在服务器端 server-side.php 脚本的jquery dataTables上显示。

仅当您提供 server-side.php 脚本的示例时才会有效。

但是为了向您提供更好的理解和输入,您所需的过滤器将全部依赖于在服务器端脚本上执行的数据库查询。例如:

  

“SELECT column_1column_2column_3 WHERE column_1 ='some   值'AND column_2 LIKE'%另一个值%'GROUP BY column_3

这个链接就是一个非常好的例子:DataTables server-side processing example

您可以修改此部分:

/* Individual column filtering */
    for ( $i=0 ; $i<count($aColumns) ; $i++ )
    {
        if ( isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true" && $_GET['sSearch_'.$i] != '' )
        {
            if ( $sWhere == "" )
            {
                $sWhere = "WHERE ";
            }
            else
            {
                $sWhere .= " AND ";
            }
            $sWhere .= "`".$aColumns[$i]."` LIKE '%".mysql_real_escape_string($_GET['sSearch_'.$i])."%' ";
        }
    }

通过这种方式,将组成json输出的数据传递给jquery dataTable并由jquery dataTable解析将被理想地过滤。

答案 1 :(得分:1)

您是否正在尝试搜索表格中的数据?如果是,那么下面是部分

function doSearch() {
        var searchText = document.getElementById('searchTerm').value;
        var targetTable = document.getElementById('mytable');
        var targetTableColCount;

        //Loop through table rows
        for (var rowIndex = 0; rowIndex < targetTable.rows.length; rowIndex++) {
            var rowData = '';

            //Get column count from header row
            if (rowIndex == 0) {
                targetTableColCount = targetTable.rows.item(rowIndex).cells.length;
                continue; //do not execute further code for header row.
            }

            //Process data rows. (rowIndex >= 1)
            for (var colIndex = 0; colIndex < targetTableColCount; colIndex++) {
                var cellText = '';

                if (navigator.appName == 'Microsoft Internet Explorer')
                    cellText = targetTable.rows.item(rowIndex).cells.item(colIndex).innerText;
                else
                    cellText = targetTable.rows.item(rowIndex).cells.item(colIndex).textContent;

                rowData += cellText;

            }

            //If search term is not found in row data
            //then hide the row, else show
            if (rowData.indexOf(searchText) == -1)
                targetTable.rows.item(rowIndex).style.display = 'none';
            else
                targetTable.rows.item(rowIndex).style.display = 'table-row';
        }
    }