<p-dataTable #dt [value]="tabListItem" [rowStyleMap]="styleMap" [responsive]="true" (onLazyLoad)="paginate($event)" [headerCheckboxToggleAllPages]="false"
[resizableColumns]="false" [rows]="numberOfRows" [pageLinks]="pageLinks" [paginator]="false" [sortOrder]="1" selectionMode="'multiple'" (onRowUnselect)="handleRowUnSelect($event)"
[(selection)]="selectedRows" (onPage)="paginate($event)" [lazy]="true" [totalRecords]="totalListCount" (onRowSelect)="handleRowSelect($event)" [rowStyleClass]="lookupRowStyleClass">
<p-column field="" header="" [style]="{'width':'3%'}" [styleClass]="'text-center'" selectionMode="multiple">
<p-checkbox name="groupname" binary="true" (onChange)="selectRow($event,this,car)">
</p-checkbox>
<input type="checkbox" class="check-box" [ngModel]="checkboxValue" (ngModelChange)="selectRow($event,this,car)">
</p-column>
<p-column *ngFor="let data of tableHeaders" field="{{data.fieldNam}}" [sortable]="false" header="{{data.header}}" [style]="{'width':data.style.width}">
<ng-template let-col let-dep="rowData" pTemplate="body">
<span title="{{dep[data.fieldNam]}}">{{dep[data.fieldNam]}}</span>
</ng-template>
</p-column>
</p-dataTable>
Моя ленивая загрузка dataTable, кажется, отлично работает с флажками для множественного выбора. Когда я нажимаю на другую страницу, она доставляет выбранные строки в массив именно так, как я думаю, и у меня есть правильный массив, содержащий эти выборы в bean-компоненте. Затем я могу установить дополнительные флажки на этой странице и без проблем выбрать дополнительные строки.
Вот где возникает мой вопрос: когда я возвращаюсь на предыдущую страницу и она отображается, я ожидал, что строки, которые я выбрал для ВСЕГДА, будут выделены и выделены, но это не так. Когда я смотрю в массив selectedRows, чтобы увидеть содержимое массива выбора, я понимаю, почему, потому что я вижу, что он содержит только выборки со второй страницы и никакие ключи строк на этой первой странице не совпадают.
Мне кажется (учитывая, что я все делаю правильно), что select multiple доставляет только выбранные строки для строк на текущей отображаемой странице данных, а затем отображает новую страницу данных - и ничего не отображается как выбранное, потому что только массив выбора содержит строки, которые не соответствуют текущим отображаемым данным.
Как это исправить
store
. Когда вы вернетесь на другую страницу, состояние будет восстановлено. Но это самый надежный способ для сложных проектов. - person Ragavan Rajan   schedule 31.08.2018