使用数据键进行多行选择
Multiple row selection with datakey
我正在开发一个使用 PrimeNg 作为 UI 库的项目。
在使用 table 时,我发现数据键 属性 并没有 select 所有相关行。当我控制台记录 selection 数组时,它显示只有 1 个被 selected。但是 UI select 是所有相关的行。
例如,我有一个 table 包含具有多个 trackingNo 的行。
每行可能有相同的 trackingNo。
当我 select 其中一个行时,它应该 select 所有具有相同 trackingNo 的相关行。
我错过了什么吗?或者这是一个错误?
<p-table
[(selection)]="selectedRows"
[columns]="cols"
[dataKey]="'trackingNo'"
[selectionMode]="'multiple'"
[lazy]="false"
[rows]="20"
[value]="values$ | async">
每次选择新行检查 trackingNo
后,您可能需要更新 selection 数组
这个汽车基地年份示例,其中我 select 当前 selection 汽车年份的每个汽车基地
<p-table [columns]="columns" [value]="carsData" selectionMode="multiple"
[(selection)]="selectedCars" (onRowSelect)="onRowSelect($event)">
<ng-template pTemplate="header" let-columns>
<tr>
<th *ngFor="let col of columns">
{{col.header}}
</th>
</tr>
</ng-template>
<ng-template pTemplate="body" let-rowData let-columns="columns" let-index="rowIndex">
<tr [pSelectableRow]="rowData" [pSelectableRowIndex]="rowIndex">
<td *ngFor="let col of columns" class="ui-resizable-column">
{{rowData[col.field]}}
</td>
</tr>
</ng-template>
</p-table>
组件
onRowSelect(event) {
const selectedCar = event.data;
setTimeout(() => {
this.selectedCars = cars.filter(car => car.year == selectedCar.year);
}, 0)
}
我正在开发一个使用 PrimeNg 作为 UI 库的项目。 在使用 table 时,我发现数据键 属性 并没有 select 所有相关行。当我控制台记录 selection 数组时,它显示只有 1 个被 selected。但是 UI select 是所有相关的行。
例如,我有一个 table 包含具有多个 trackingNo 的行。 每行可能有相同的 trackingNo。 当我 select 其中一个行时,它应该 select 所有具有相同 trackingNo 的相关行。
我错过了什么吗?或者这是一个错误?
<p-table
[(selection)]="selectedRows"
[columns]="cols"
[dataKey]="'trackingNo'"
[selectionMode]="'multiple'"
[lazy]="false"
[rows]="20"
[value]="values$ | async">
每次选择新行检查 trackingNo
这个汽车基地年份示例,其中我 select 当前 selection 汽车年份的每个汽车基地
<p-table [columns]="columns" [value]="carsData" selectionMode="multiple"
[(selection)]="selectedCars" (onRowSelect)="onRowSelect($event)">
<ng-template pTemplate="header" let-columns>
<tr>
<th *ngFor="let col of columns">
{{col.header}}
</th>
</tr>
</ng-template>
<ng-template pTemplate="body" let-rowData let-columns="columns" let-index="rowIndex">
<tr [pSelectableRow]="rowData" [pSelectableRowIndex]="rowIndex">
<td *ngFor="let col of columns" class="ui-resizable-column">
{{rowData[col.field]}}
</td>
</tr>
</ng-template>
</p-table>
组件
onRowSelect(event) {
const selectedCar = event.data;
setTimeout(() => {
this.selectedCars = cars.filter(car => car.year == selectedCar.year);
}, 0)
}