angular - 在 PrimeNG p-table 中单击取消按钮后如何保留复选框的选择?
问题描述
我使用下面的代码来显示带有确定和取消按钮的对话框,同时取消选择 PrimeNG p-table 中的复选框。如果有人试图取消取消选中复选框,那么我需要保留复选框的选择。
<p-table [value]="data" [scrollable]="true" scrollHeight="400px" frozenWidth="450px"
dataKey="id" [(selection)]="chkBoxSelectedFARow" editMode="row"
[first]="first" [totalRecords]="totalRecordsCount" [rows]="20" selectionMode="multiple"
[lazy]="true" (onPage)="loadpaginator($event)"
autoLayout="true" sortMode="single" (onRowSelect)="onRowEditSelect($event)" (onHeaderCheckboxToggle)="rowChangeGrid($event)"
[customSort]="true" (onRowUnselect)="onRowEditUnselect($event)">
<ng-template pTemplate="header">
<tr>
<th><p-tableHeaderCheckbox></p-tableHeaderCheckbox></th>
<th>Id</th>
<th>Number</th>
</tr>
</ng-template>
<ng-template pTemplate="body" let-data let-rowIndex="rowIndex">
<tr [pSelectableRow]="data" [pSelectableRowIndex]="rowIndex">
<td><p-tableCheckbox #chkRowData [value]="data" [index]="rowIndex"></p-tableCheckbox></td>
<td>{{data.id}}</td>
<td>{{data.number}}</td>
</tr>
</ng-template>
</p-table>
单击对话框中的取消按钮后如何保留复选框的选择?
解决方案
每次取消选择一行时,将其id
存储在缓冲区变量中。然后,当您取消操作时,只需将相应的对象放回您的选择。
onRowEditUnselect($event) {
this.lastUnselectedCheckbox = $event.data.id; // stock last unchecked item
this.unCheckDisplayDialog = true;
}
cancelRow() {
let checkboxToAdd = this.data.filter(
item => item.id === this.lastUnselectedCheckbox
)[0]; // search corresponding object
checkboxToAdd.status = true;
this.selection.push(checkboxToAdd); // put it back to selection
this.selection = [...this.selection];
this.unCheckDisplayDialog = false;
}
推荐阅读
- ios - iOS - Swift - AVPlayer:使用包含 khmer unicode 的 url 时出错
- python - Python 从 gzip 文件中读取 csv 行
- cakephp-3.0 - 无法保存数据但消息已保存
- sql - 将查询添加到现有查询以显示余额库存将是下个月的营业库存
- algorithm - 基于剩余空间将作业分配给主机的算法
- jmeter - 如何使用 jmeter 查找和预订具有不同用户并发的不同航班
- python - 使用傅立叶变换将图像转换为声音(我认为它不起作用)
- javascript - 无法捕获对节点服务器的 POST 请求的响应
- matlab - MATLAB 的 fit() 函数如何区分 Levenberg-Marquardt 的任意 MATLAB 表达式以使其适用?
- reactjs - React-Route 不匹配任何路由