我在服务器端处理中使用 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)
];
有没有人知道我是否遗漏了某些东西?
答案 0 :(得分:0)
您已使用.withOption('serverSide', true)
启用了服务器端处理。在服务器端处理模式过滤中,分页和排序计算都由服务器执行。
请参阅客户端在服务器端处理模式下发送的full list of parameters。其中包括:
search[value]
全局搜索值
columns[i][search][value]
搜索值以应用于此特定列。
如果您没有处理这些参数,那么它将显示为没有执行排序。
解决方案是在服务器端实现过滤,分页和排序,或者切换到客户端处理模式。在客户端处理模式下,仍然可以从服务器检索数据,但过滤,分页和排序将由jQuery DataTables插件执行。
有关详细信息,请参阅Processing modes。