Angular-数据表排序日期列在 dd MM yyyy 格式中不起作用
Angular-Datatables sorting date column not working in dd MM yyyy format
我正在使用 AngularJs 创建我的前端项目。
我的目标是通过这种方式在 uib-accordion、uib-accordion-group 元素中创建动态的 N 个数据表:
<uib-accordion class="" close-others="true">
<div uib-accordion-group class="panel-default" ng-repeat="service in orderOrganizerCtrl.tableServiceIdFilter">
<uib-accordion-heading>
{{'2101_OrderEntry.Organizer.Service' | translate}}{{service.key}} <br/>
<span>{{'2101_OrderEntry.Organizer.SelectedAgenda' | translate}}</span> {{ orderOrganizerCtrl.getAgendaName(service.key) }} <br/>
<span>{{'2101_OrderEntry.Organizer.DateHourSelected' | translate}}</span> {{ orderOrganizerCtrl.getAppointment(service.key) }}
</uib-accordion-heading>
<!-- Here, datatable content -->
<table class="table data-table row-border hover" id="agenda_{{service.key}}" datatable="ng">
<thead>
<th class="sorting_asc">{{'2101_OrderEntry.Organizer.AgendaServices' | translate}}</th>
<th class="sorting_asc sorting_1">{{'2101_OrderEntry.Organizer.DateAppointment' | translate}}</th>
<th class="sorting_asc">{{'2101_OrderEntry.Organizer.HourAppointment' | translate}}</th>
</thead>
<tbody>
<tr ng-click="orderOrganizerCtrl.selectRow(item, 'agenda_' + service.key, service.key)" ng-repeat="item in orderOrganizerCtrl.agendaSimplified track by $index" ng-if="item.serviceName === service.key">
<td align="center">{{item.agendaName}}</td>
<td align="center">{{item.dateAppointment| date:'dd MM yyyy'}}</td>
<td align="center">{{item.hourAppointment}}</td>
</tr>
</tbody>
</table>
</div>
</uib-accordion>
我的问题是 "dateAppointment" 列的排序。每个 "item.dateAppointment" 元素都是一个日期元素。为什么排序不起作用?我尝试以这种方式将 DTColumnDefBuilder 与 dtColumnDefs 的定义一起使用:
this.dtColumnDefs = [
DTColumnDefBuilder.newColumnDef(1).
.withOption('type', 'date')
];
但它不起作用(可能是因为表是动态创建的)。
有人可以帮助我吗?
您应该指定排序顺序和要排序的列。试试这个:
$scope.dtOptions = DTOptionsBuilder.newOptions()
.withPaginationType('full_numbers')
.withDisplayLength(10)
.withOption('order', [0, 'desc']);
$scope.dtColumnDefs = [
DTColumnDefBuilder.newColumnDef(0).withOption('type', 'date'),
DTColumnDefBuilder.newColumnDef(1).notSortable(),
DTColumnDefBuilder.newColumnDef(2).notSortable(),
DTColumnDefBuilder.newColumnDef(3).notSortable(),
...
];
在这里,第一列是日期列。希望对你有帮助..
我正在使用 AngularJs 创建我的前端项目。 我的目标是通过这种方式在 uib-accordion、uib-accordion-group 元素中创建动态的 N 个数据表:
<uib-accordion class="" close-others="true">
<div uib-accordion-group class="panel-default" ng-repeat="service in orderOrganizerCtrl.tableServiceIdFilter">
<uib-accordion-heading>
{{'2101_OrderEntry.Organizer.Service' | translate}}{{service.key}} <br/>
<span>{{'2101_OrderEntry.Organizer.SelectedAgenda' | translate}}</span> {{ orderOrganizerCtrl.getAgendaName(service.key) }} <br/>
<span>{{'2101_OrderEntry.Organizer.DateHourSelected' | translate}}</span> {{ orderOrganizerCtrl.getAppointment(service.key) }}
</uib-accordion-heading>
<!-- Here, datatable content -->
<table class="table data-table row-border hover" id="agenda_{{service.key}}" datatable="ng">
<thead>
<th class="sorting_asc">{{'2101_OrderEntry.Organizer.AgendaServices' | translate}}</th>
<th class="sorting_asc sorting_1">{{'2101_OrderEntry.Organizer.DateAppointment' | translate}}</th>
<th class="sorting_asc">{{'2101_OrderEntry.Organizer.HourAppointment' | translate}}</th>
</thead>
<tbody>
<tr ng-click="orderOrganizerCtrl.selectRow(item, 'agenda_' + service.key, service.key)" ng-repeat="item in orderOrganizerCtrl.agendaSimplified track by $index" ng-if="item.serviceName === service.key">
<td align="center">{{item.agendaName}}</td>
<td align="center">{{item.dateAppointment| date:'dd MM yyyy'}}</td>
<td align="center">{{item.hourAppointment}}</td>
</tr>
</tbody>
</table>
</div>
</uib-accordion>
我的问题是 "dateAppointment" 列的排序。每个 "item.dateAppointment" 元素都是一个日期元素。为什么排序不起作用?我尝试以这种方式将 DTColumnDefBuilder 与 dtColumnDefs 的定义一起使用:
this.dtColumnDefs = [
DTColumnDefBuilder.newColumnDef(1).
.withOption('type', 'date')
];
但它不起作用(可能是因为表是动态创建的)。 有人可以帮助我吗?
您应该指定排序顺序和要排序的列。试试这个:
$scope.dtOptions = DTOptionsBuilder.newOptions()
.withPaginationType('full_numbers')
.withDisplayLength(10)
.withOption('order', [0, 'desc']);
$scope.dtColumnDefs = [
DTColumnDefBuilder.newColumnDef(0).withOption('type', 'date'),
DTColumnDefBuilder.newColumnDef(1).notSortable(),
DTColumnDefBuilder.newColumnDef(2).notSortable(),
DTColumnDefBuilder.newColumnDef(3).notSortable(),
...
];
在这里,第一列是日期列。希望对你有帮助..