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

By admin, 19 五月, 2016

如果表格数据全部来自数据库,可以直接使用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即可。

标签

评论

Restricted HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <img src>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。
验证码
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
请输入"Drupal10"