2017-05-29 4 views
0

Ich möchte serverseitige Paginierung in meinem ag-Grid durchführen. Ich habe das Grid erfolgreich implementiert und bestimmte Daten beim ersten Laden der Seite angezeigt. Ich habe mehr als 5000 Datensätze in meiner Tabelle und jedes Mal, wenn ich den nächsten Knopf drücke, muss ich den Server anrufen, um die nächsten Datensätze in meinem Raster zu bekommen. Aber ich weiß nicht, wie man Paginierungsereignisse abhört, um eine weitere HTTP-Anfrage zu machen. Mein Server wird nicht getroffen, wenn ich auf die Schaltfläche Weiter/Zurück klicke.ag-Grid serverseitige Paginierungsereignisse

My Grid Optionen:

this.gridOptions = <GridOptions>{}; 
    this.gridOptions = { 

     enableServerSideSorting: true, 
     enableServerSideFilter: true, 
     enableSorting: true, 
     enableFilter: true, 
     enableColResize: true, 
     rowSelection: 'single', 
     rowDeselection: true, 
     columnDefs: this.columnDefs, 
     rowModelType: 'infinite', 
     paginationPageSize: 35, 
     maxConcurrentDatasourceRequests: 2, 
     infiniteInitialRowCount: 1, 
     getRowNodeId: (item: any) => { 
      return item.id; 
     }, 
     pagination: true, 
     onGridReady:() => { this.gridOptions.api.sizeColumnsToFit(); }, 
     context: { componentParent: this },//to invoke the method of this(parent) component from child component, 
     onRowClicked: (event: any) => { this.router.navigateByUrl(`/dataList/edit/${event.data.id}`); }, 
    }; 

Datenquelle defination:

let dataSource = { 
     getRows: (params: any) => { 
      setTimeout(() => { 

       let dataAfterSortingAndFiltering = this.sortAndFilter(allOfTheData, params.sortModel, params.filterModel); 
       let rowsThisPage = dataAfterSortingAndFiltering.slice(params.startRow, params.endRow); 
       // if on or after the last page, work out the last row. 
       let lastRow = -1; 
       if (dataAfterSortingAndFiltering.length <= params.endRow) { 
        lastRow = dataAfterSortingAndFiltering.length; 
       } 

       params.successCallback(rowsThisPage, lastRow); 
      }, 500); 
     } 
    }; 
    this.gridOptions.api.setDatasource(dataSource); 

Antwort

0

Dies ist ein Hinweis aus Aggrid doc:

In v9.0 ag-Grid Paginierung geändert von serverseitige Paginierung zur Kundenseite. Die serverseitige Paginierung wurde in Version 10.1 entfernt. Wenn Sie die Seitenumbrüche auf der Serverseite ausführen, empfehlen wir die Umstellung auf Paginierung mit unbegrenztem Scrollen als Möglichkeit zur Migration auf den neuen Mechanismus. Wenn Sie die Daten in Ihrer Datenquelle manuell aufteilen, um die Paginierung nur im Browser nachzuahmen, empfiehlt es sich, das standardmäßige In-Memory-Zeilenmodell zu verwenden und die Zeilendaten als normal festzulegen und dann die Rastereigenschaft pagination = true festzulegen.

Ich denke, Sie können PaginationChanged Ereignis hören und API-Aufruf dann SetData aufrufen.

Ich hoffe, es hilft.