Teradata 共价数据 table (sortChange) 输出不对 table 列进行排序
Teradata Covalent datatable (sortChange) output doesn't sort table columns
我正在尝试生成 Teradata 共价数据的所有列table sortable。我正在使用原子 table 组件,因为我必须向 table 添加操作按钮。据我从文档中了解到,(sortChange)输出用于调用我添加排序逻辑的组件代码中的函数?出于某种原因,我的排序功能从未对列进行排序...知道我在这里做错了什么吗?
更新
我看到 ITdDataTableSortChangeEvent 的名称 属性 在调用排序函数时始终为空,而不是包含特定列的鬃毛...知道如何将该事件传递给排序函数列的名称 属性 set?
my html code?
更新 2
根据@Chic 的建议,我可以看到传递给排序函数的事件包含正确的数据,但是列仍然没有排序...
My filter function:
filter(): void {
let newData: IEmployee[] = this.employees;
let excludedColumns: string[] = this.columns
.filter((column: ITdDataTableColumn) => {
return ((column.filter === undefined && column.hidden === true) ||
(column.filter !== undefined && column.filter === false));
}).map((column: ITdDataTableColumn) => {
return column.name;
});
newData = this._dataTableService.filterData(newData, this.searchTerm, true, excludedColumns);
this.filteredTotal = newData.length;
newData = this._dataTableService.sortData(newData, this.sortBy, this.sortOrder);
newData = this._dataTableService.pageData(newData, this.fromRow, this.currentPage * this.pageSize);
this.filteredEmployees = newData;
}
<table *ngIf="filteredEmployees.length > 0" td-data-table>
<thead>
<tr td-data-table-column-row>
<th td-data-table-column [sortable]="true" [sortOrder]="'ASC'" *ngFor="let column of columns" (sortChange)="sort($event)">
{{column.label}}
</th>
<th>
Action
</th>
</tr>
</thead>
<tbody>
<tr td-data-table-row *ngFor="let row of filteredEmployees">
<td td-data-table-cell *ngFor="let column of columns">
{{row[column.name]}}
</td>
<td>
<mat-icon class="fa fa-edit fa-2x" (click)="editCashier(row)" matTooltip="Edit Cashier"></mat-icon>
<mat-icon class="fa fa-trash fa-2x" title="Delete" (click)="deleteCashier(row)" matTooltip="Delete Cashier" aria-label="Delete"></mat-icon>
</td>
</tr>
</tbody>
</table>
my sort function:
sort(sortEvent: ITdDataTableSortChangeEvent): void {
console.log("sort called");
this.sortBy = sortEvent.name;
console.log(sortEvent.name);
this.filter();
}
您需要在 td-data-table-column
组件上设置 [name]="column.name"
输入。即用在sort change event.
另外请注意,每次过滤以触发更改检测时,请确保您的过滤函数正在更改数组引用(即创建新数组)。对于版本 1.0.0-rc.0
,这不是自动完成的,但将来会为您完成。
我正在尝试生成 Teradata 共价数据的所有列table sortable。我正在使用原子 table 组件,因为我必须向 table 添加操作按钮。据我从文档中了解到,(sortChange)输出用于调用我添加排序逻辑的组件代码中的函数?出于某种原因,我的排序功能从未对列进行排序...知道我在这里做错了什么吗?
更新
我看到 ITdDataTableSortChangeEvent 的名称 属性 在调用排序函数时始终为空,而不是包含特定列的鬃毛...知道如何将该事件传递给排序函数列的名称 属性 set?
my html code?
更新 2
根据@Chic 的建议,我可以看到传递给排序函数的事件包含正确的数据,但是列仍然没有排序...
My filter function:
filter(): void {
let newData: IEmployee[] = this.employees;
let excludedColumns: string[] = this.columns
.filter((column: ITdDataTableColumn) => {
return ((column.filter === undefined && column.hidden === true) ||
(column.filter !== undefined && column.filter === false));
}).map((column: ITdDataTableColumn) => {
return column.name;
});
newData = this._dataTableService.filterData(newData, this.searchTerm, true, excludedColumns);
this.filteredTotal = newData.length;
newData = this._dataTableService.sortData(newData, this.sortBy, this.sortOrder);
newData = this._dataTableService.pageData(newData, this.fromRow, this.currentPage * this.pageSize);
this.filteredEmployees = newData;
}
<table *ngIf="filteredEmployees.length > 0" td-data-table>
<thead>
<tr td-data-table-column-row>
<th td-data-table-column [sortable]="true" [sortOrder]="'ASC'" *ngFor="let column of columns" (sortChange)="sort($event)">
{{column.label}}
</th>
<th>
Action
</th>
</tr>
</thead>
<tbody>
<tr td-data-table-row *ngFor="let row of filteredEmployees">
<td td-data-table-cell *ngFor="let column of columns">
{{row[column.name]}}
</td>
<td>
<mat-icon class="fa fa-edit fa-2x" (click)="editCashier(row)" matTooltip="Edit Cashier"></mat-icon>
<mat-icon class="fa fa-trash fa-2x" title="Delete" (click)="deleteCashier(row)" matTooltip="Delete Cashier" aria-label="Delete"></mat-icon>
</td>
</tr>
</tbody>
</table>
my sort function:
sort(sortEvent: ITdDataTableSortChangeEvent): void {
console.log("sort called");
this.sortBy = sortEvent.name;
console.log(sortEvent.name);
this.filter();
}
您需要在 td-data-table-column
组件上设置 [name]="column.name"
输入。即用在sort change event.
另外请注意,每次过滤以触发更改检测时,请确保您的过滤函数正在更改数组引用(即创建新数组)。对于版本 1.0.0-rc.0
,这不是自动完成的,但将来会为您完成。