Angular数据表不允许使用服务器端处理对列进行排序

时间:2015-07-10 20:13:47

标签: javascript angularjs datatables

我在服务器端处理中使用 angular-datatables ,并且不允许我对列进行排序。

这是我的 HTML

<table class="table table-striped table-bordered" datatable="" dt-column-defs="dtColumnDefs" dt-options="dtOptions">
    <thead>
        <tr>
            <th translate>NAME</th>
            <th translate>BASIC_UNIT</th>
            <th translate>STATUS</th>
        </tr>
    </thead>
</table>

这是我在相应控制器中的 JS

  $scope.dtOptions = DTOptionsBuilder.newOptions()
    .withBootstrap()
    .withOption('order', [0, 'asc'])
    .withOption('ajax', {
      url: 'path/to/server/resource',
      type: 'POST'
    })
    .withDataProp('data')
    .withOption('processing', true)
    .withOption('serverSide', true)
    .withPaginationType('full_numbers');

  $scope.dtColumnDefs = [
    DTColumnDefBuilder.newColumnDef(0)
    .withOption('sName', 'name')

    DTColumnDefBuilder.newColumnDef(1)
    .withOption('sName', 'basic_unit')
    .withOption('bSearchable', false)
    .withOption('bSortable', false),

    DTColumnDefBuilder.newColumnDef(2)
    .withOption('sName', 'status')
    .withOption('bSearchable', false)
    .withOption('bSortable', false)
  ];

有没有人知道我是否遗漏了某些东西?

1 个答案:

答案 0 :(得分:0)

您已使用.withOption('serverSide', true)启用了服务器端处理。在服务器端处理模式过滤中,分页和排序计算都由服务器执行。

请参阅客户端在服务器端处理模式下发送的full list of parameters。其中包括:

  

search[value]全局搜索值

     

columns[i][search][value]搜索值以应用于此特定列。

如果您没有处理这些参数,那么它将显示为没有执行排序。

解决方案是在服务器端实现过滤,分页和排序,或者切换到客户端处理模式。在客户端处理模式下,仍然可以从服务器检索数据,但过滤,分页和排序将由jQuery DataTables插件执行。

有关详细信息,请参阅Processing modes