欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Drupal7怎样做带排序功能的表格

如果表格数据全部来自数据库,可以直接使用Drupal 7的tablesort功能。

 

 

$header = array(
    array('data' => '学号', 'field' => 'school_id'),
    array('data' => '姓名', 'field' => 'name'),
    array('data' => '班别', 'field' => 'class'),
    array('data' => '操作'), // 此列不支持排序
  );

$query = db_select('cj3_exam_scores', 's')
  $query->extend('TableSort')
    ->orderByHeader($header);
  $result = $query->execute();

$rows = ...; // 把$result的值填到$rows里

    $form['result'] = array(
      '#markup' => theme('table', array('header' => $header, 'rows' => $rows)) ,
    );

如果表格数据不是直接来自数据库,而是PHP计算出来的,那么就不能使用orderByHeader的功能。然而,我们还是可以利用Drupal对表格排序的大部分功能的。如果在theme table的时候,header里包含field字段,那么在前端的表头中就会有排序按钮(不管它后端是否实现了排序功能)。点击该排序按钮之后,会以GET方式发送排序的字段(sort)和排序顺序(order),根据这两个GET参数我们就可以在后端自己实现排序功能。

 

 

  $sort = filter_input(INPUT_GET, 'sort');
  $order = filter_input(INPUT_GET, 'order');

根据sort和order的值,我们可以对$rows进行重新排序,再输出给theme table即可。


来自  http://cto.eguidedog.net/node/420


普通分类: