"列索引"在服务器端处理的DataTable

时间:2014-05-06 21:57:24

标签: php jquery indexing datatables server-side

是否有人知道如何将 列索引 添加到服务器端已处理DataTable?基本上类似于http://www.datatables.net/examples/api/counter_columns.html,但此示例按客户端构建索引,使用公共服务器端版本不支持该索引。

作者艾伦给出了三个提示,但实际上我没有得到它:

  • 修改服务器上的数据(理想的解决方案)
  • 修改从服务器返回的数据
  • 编辑绘制回调函数以考虑页面开始位置。

我跌跌撞撞 - 我不知道如何开始以及如何去做。你能帮我一下吗?那太棒了!

1 个答案:

答案 0 :(得分:2)

我指的是这里的simple.html示例。

在server_processing.php中,将最后一行替换为:

    /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
     * If you just want to use the basic configuration for DataTables with PHP
     * server-side, there is no need to edit below this line.
     */
    require( 'ssp.class.php' );
    $result=SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns );
    $start=$_REQUEST['start'];
    $idx=0;
    foreach($result['data'] as &$res){
        $res[0]=(string)$start;
        $start++;
        $idx++;
    }
    echo json_encode($result);

这将为返回的数组生成一个row-id。此外,您需要将$ colums数组中的数字移1,因为id插入位置0。

$columns = array(
    array( 'db' => 'first_name', 'dt' => 1 ),
    array( 'db' => 'last_name',  'dt' => 2 ),
    array( 'db' => 'position',   'dt' => 3 ),
    etc ...

最后,您需要在html中添加一个额外的id列:

    <thead>
        <tr>
            <th>ID</th>
            <th>First name</th>
            <th>Last name</th>
            etc ...

Allan的意思是&#34; 修改数据,因为它从服务器返回&#34;。这有一些缺点。使用服务器端处理排序时,在生成的sql查询中进行过滤和搜索,该查询从数据库中获取数据。由于您似乎没有db中的增量ID字段:没有为您排序ID,请回来一年!

这将我们带到Allans的建议Nr.1&#34; 修改服务器上的数据(理想的解决方案)&#34;这基本上意味着:给你的数据库增加一个id并将其用作一个简单的字段。这可以通过简单的更新查询来完成。当然,如果你不想在行ID之后排序,那么这个答案就可以了。