如何使用 primeng table select Angular 中的多行?
How to select multiple rows in Angular using primeng table?
我有一个 primeng table。我想要 select 多行 .
html:
<p-contextMenu #cm [model]="items"></p-contextMenu>
<p-table [columns]="columns" [value]="values" [(contextMenuSelection)]="selectedProduct" [contextMenu]="cm" dataKey="tradeId" [rowHover]=true
selectionMode="multiple" [(selection)]="selectedProducts2"
>
<ng-template pTemplate="header" let-columns>
<tr>
<th pSortableColumn *ngFor="let col of getKeys(columns)" pReorderableColumn pResizableColumn>
{{col}}
</th>
</tr>
</ng-template>
<ng-template pTemplate="body" let-block let-columns="columns" let-rowIndex="rowIndex">
<tr [pSelectableRow]="block" [pSelectableRowIndex]="rowIndex">
<td *ngFor="let col of getKeys(columns)">
{{block[col]}}
</td>
</tr>
</ng-template>
打字稿
import {Component, OnInit, Input, SimpleChanges} from '@angular/core';
import {MenuItem} from "primeng/api";
@Component({
selector: 'app-data-table',
templateUrl: './data-table.component.html',
styleUrls: ['./data-table.component.css']
})
export class DataTableComponent implements OnInit {
@Input() public omsBlockList : OmsBlock[] =[];
@Input() public selectedEntity: any ='';
@Input() public entityData : any;
selectedProduct=OmsBlock[];
selectedProducts2=OmsBlock[];
omsBlocks: OmsBlock[]=[];
items: MenuItem[]=[];
_entity=new Map<String,String>();
columns: any;
cols:any[]=[];
entityfieldMap: any=new Map();
exportColumns: any[];
constructor() {
this.selectedProduct={} as OmsBlock;
}
ngOnInit() {
this.exportColumns=this.cols.map(col => ({title: col.header, datakey: col.field}));
}
getKeys(map):string[]{
if(map!=null){
return Array.from(map.values());
}
}
ngOnChanges(changes:SimpleChanges){
this._entityData=new Map<String,String>();
for(var val of this.entityData[this.selectedEntity]["fields"]){
this._entityData.set(val["displayName"], val["fieldName"]);
}
this.columns.this._entityData;
}
}
在 select 单个行上,所有行都得到 selected。我想使用不带 metakey 的 select 行,并且在单击每一行时,该行必须被 selected。在 select 一行中,多行得到 selected。我指的是来自该站点的相同代码-> https://primefaces.org/primeng/showcase/#/table/selection
我有什么错误吗?
我猜你的有问题
[dataKey]="tradeId"
每行的 tradeId 是否唯一?
我玩了一下,它与 [datakey]="code" 一起工作正常,
你可以在这里查看
https://stackblitz.com/edit/primeng-tableselection-demo-9t5cyt?file=src%2Fapp%2Fapp.component.ts
我有一个 primeng table。我想要 select 多行 .
html:
<p-contextMenu #cm [model]="items"></p-contextMenu>
<p-table [columns]="columns" [value]="values" [(contextMenuSelection)]="selectedProduct" [contextMenu]="cm" dataKey="tradeId" [rowHover]=true
selectionMode="multiple" [(selection)]="selectedProducts2"
>
<ng-template pTemplate="header" let-columns>
<tr>
<th pSortableColumn *ngFor="let col of getKeys(columns)" pReorderableColumn pResizableColumn>
{{col}}
</th>
</tr>
</ng-template>
<ng-template pTemplate="body" let-block let-columns="columns" let-rowIndex="rowIndex">
<tr [pSelectableRow]="block" [pSelectableRowIndex]="rowIndex">
<td *ngFor="let col of getKeys(columns)">
{{block[col]}}
</td>
</tr>
</ng-template>
打字稿
import {Component, OnInit, Input, SimpleChanges} from '@angular/core';
import {MenuItem} from "primeng/api";
@Component({
selector: 'app-data-table',
templateUrl: './data-table.component.html',
styleUrls: ['./data-table.component.css']
})
export class DataTableComponent implements OnInit {
@Input() public omsBlockList : OmsBlock[] =[];
@Input() public selectedEntity: any ='';
@Input() public entityData : any;
selectedProduct=OmsBlock[];
selectedProducts2=OmsBlock[];
omsBlocks: OmsBlock[]=[];
items: MenuItem[]=[];
_entity=new Map<String,String>();
columns: any;
cols:any[]=[];
entityfieldMap: any=new Map();
exportColumns: any[];
constructor() {
this.selectedProduct={} as OmsBlock;
}
ngOnInit() {
this.exportColumns=this.cols.map(col => ({title: col.header, datakey: col.field}));
}
getKeys(map):string[]{
if(map!=null){
return Array.from(map.values());
}
}
ngOnChanges(changes:SimpleChanges){
this._entityData=new Map<String,String>();
for(var val of this.entityData[this.selectedEntity]["fields"]){
this._entityData.set(val["displayName"], val["fieldName"]);
}
this.columns.this._entityData;
}
}
在 select 单个行上,所有行都得到 selected。我想使用不带 metakey 的 select 行,并且在单击每一行时,该行必须被 selected。在 select 一行中,多行得到 selected。我指的是来自该站点的相同代码-> https://primefaces.org/primeng/showcase/#/table/selection 我有什么错误吗?
我猜你的有问题
[dataKey]="tradeId"
每行的 tradeId 是否唯一? 我玩了一下,它与 [datakey]="code" 一起工作正常, 你可以在这里查看 https://stackblitz.com/edit/primeng-tableselection-demo-9t5cyt?file=src%2Fapp%2Fapp.component.ts