我想问一下在启动时是否有办法过滤数据表服务器端?
我尝试过类似这样的代码:
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();
}
但它不起作用。
答案 0 :(得分:5)
Salute brod,
正如我所理解的那样。您正尝试过滤记录,以便在服务器端 server-side.php
脚本的jquery dataTables上显示。
仅当您提供 server-side.php
脚本的示例时才会有效。
但是为了向您提供更好的理解和输入,您所需的过滤器将全部依赖于在服务器端脚本上执行的数据库查询。例如:
“SELECT
column_1
,column_2
,column_3
WHEREcolumn_1
='some 值'ANDcolumn_2
LIKE'%另一个值%'GROUP BYcolumn_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';
}
}