2016-09-08 20 views
4

Я пытаюсь привести таблицу таблиц данных с разбивкой по страницам, которая имеет выбор флажка для данных в ней. Я могу выбрать данные страницы, и когда я перехожу на другую страницу и выбираю другой набор данных, выбор первой страницы будет потерян.PrimeNG datatable checkbox selection with pagination

demo.html:

<p-dataTable [value]="cars" [rows]="10" [paginator]="true" [pageLinks]="3" [rowsPerPageOptions]="[5,10,20]" sortMode="multiple" [(selection)]="selectedCars2"> 
     <p-column [style]="{'width':'38px'}" selectionMode="multiple" ></p-column> 
     <p-column field="vin" header="Vin"></p-column> 
     <p-column field="year" header="Year"></p-column> 
     <p-column field="brand" header="Brand"></p-column> 
     <p-column field="color" header="Color"> 
      <template let-col let-car="rowData" pTemplate type="body"> 
       <span [style.color]="car[col.field]">{{car[col.field]}}</span> 
      </template> 
     </p-column> 

     <!--<p-column styleClass="col-button"> 
      <template pTemplate type="header"> 
       <input type="checkbox" [(ngModel)]="checkUncheckAll" /> 
      </template> 
      <template let-car="rowData" pTemplate type="body"> 
       <input type="checkbox" [(ngModel)]="checkValue[car.vin]" (click)="selectCar(car, checkValue[car.vin])"/> 
      </template> 
     </p-column>--> 
    </p-dataTable> 

    <div class="table-controls-top"><div class="pager"><input type="button" class="button_tablecontrol" (click)="selectCar(selectedCars2)" value="Delete"></div></div> 

demo.ts:

import {Component,OnInit} from '@angular/core'; 
import {Car} from '../domain/car'; 
import {CarService} from '../service/carservice'; 
import {Message} from '../common/api'; 

@Component({ 
    templateUrl: 'app/showcase/demo/datatable/datatabledemo.html' 
}) 
export class DataTableDemo implements OnInit { 

    cars: Car[]; 

    cols: any[]; 

    msgs: Message[] = []; 

    checkValue: any; 

    selectedCars2: any[]; 

    constructor(private carService: CarService) { 

     this.checkValue = {}; 

     this.selectedCars2 = []; 

    } 

    ngOnInit() { 
     this.carService.getCarsCustom().then(
     cars => { 
      this.cars = cars; 
      for (var car of this.cars) { 
      console.log(car.vin) 
       this.checkValue[car.vin] = false; 
      } 
     }); 

     this.cols = [ 
      {field: 'vin', header: 'Vin'}, 
      {field: 'year', header: 'Year'}, 
      {field: 'brand', header: 'Brand'}, 
      {field: 'color', header: 'Color'} 
     ]; 
    } 

    selectCar(selectedCars) { 

     console.log(selectedCars) 
     console.log(this.selectedCars2) 
    } 

} 

Screenshot of datatable

Я полагаю, что команда не реализована функциональность еще. Любая идея/представление о том, как сохранить выбор строк (в модели «selectedCars2») с разбиением на страницы?

Заранее спасибо.

+0

ли вы когда-нибудь это отсортированный? Кажется, он еще не исправлен ... – goncaloGomes

+0

Вы решили это. Я могу установить флажок в заголовке группы строк, но когда я нажимаю на него, я хочу, чтобы все флажки для этой группы были отмечены. – Ziggler

ответ

0

Проблема обсуждается на GitHub:

DataTable selection with pagination

Чтобы помочь вам сейчас:

<p-dataTable [value]="data" [rows]="PageSize" [paginator]="ShowPaginator" [pageLinks]="3" [(selection)]="selectedData" (onHeaderCheckboxToggle)="onTableHeaderCheckboxToggle($event)"> 
    <p-column [style]="{'width':'38px'}" selectionMode="multiple"></p-column> 
    </p-dataTable> 

class Test { 
private data: MyData[]; 
selectedData: MyData[]; 

onTableHeaderCheckboxToggle(event: any) { 
    if (event.checked === true) { 
    for (let m of this.data) { 
     if (/* Make your test here if the array does not contain the element*/) { 
      this.selectedData.push(m); 
     } 
    } 
    } else { 
    this.selectedData.length = 0; 
    } 

}}