пагинация сетки ag не работает, изначально выполняется вызов сервера дважды

Нажатие кнопки поиска на странице вернет результат вызова сервера и отобразит его в сетке ag. При каждом щелчке мышью на страницы сервер привязки будет возвращать клиенту только определенное количество записей.

Реализована сетка ag, но сетка не загружается после нажатия на поиск. Можете ли вы помочь мне разобраться, где я делаю не так?

Это html, раздел сетки и кнопка поиска.

 <form [formGroup]="myForm" >
   <div>
    <div class="panel-body">
     <div class="row col-md-12">
      <div class="form-group">
         <label for="category">Category</label>
         <select  class="form-control"
            (change)="getSubCategories($event.target.value)"
            formControlName="catCode"   >
            <option value="select" selected disabled>--Select--</option>
            <option *ngFor="let category of categoryMaster" value="{{category.catCode}}">{{category.catDesc}}</option>
         </select>
      </div>
      </div>
      <button type="submit" class="btn btn-default">Search</button>
   </div>
   </div>
   </form>
</div>
<div class="col-md-12" *ngIf="rowData.length > 0">  
    <ag-grid-angular #agGrid style="width: 100%; height: 350px;" class="ag-fresh"
        [gridOptions]="gridOptions"
        [columnDefs]="columnDefs"    
        [rowData]="rowData"
        [datasource] = "dataSource"
        enableColResize
        enableSorting
        enableFilter
        rowSelection="single"
    ></ag-grid-angular>
</div>

Составная часть

export class ISearchComponent {
    myForm: FormGroup;
    rowData: Array<IncidentHeaderModel> = new Array<IncidentHeaderModel>();
    gridOptions = <GridOptions>{
        context: {},
        rowModelType: 'pagination',
        enableServerSideFilter: true,
        paginationPageSize: 10

    };

    //defining the headers
    columnDefs:any[] = [
        {headerName: 'Status', field: 'incidentStatus.value'},
        {headerName: 'Category', field: 'categoryMast.catDesc'},
        {headerName: 'Sub Category', field: 'subCategoryMast.subCatDesc'},
        {headerName: 'Location', field: 'location.locName'},
        {headerName: 'Time', field: 'incidentTime'},
        {headerName: 'Delay(Hrs)', cellRenderer:this.getDelayInHours}

    ];


    constructor(private masterDataService:MasterDataService,private http: Http) {
        this.myForm = new FormGroup({
        'catCode'   : new FormControl()

    }  

// при вызове этого источника данных

   dataSource = {
       pageSize: 10,
        getRows: (params: any) => {
          console.log("here dataSource")
                this.searchIncident(params.startRow, params.endRow); // returns json from server
                var rowsThisPage = this.rowData;
                var lastRow = -1;
                if (rowsThisPage.length <= params.endRow) {
                    lastRow = rowsThisPage.length;
                }
              params.successCallback(rowsThisPage, lastRow);
        }
     }

// серверный вызов и возвращает данные json.

searchIncident(start:number, end:number){


  myJson['firstResult'] = start;
  myJson.maxResult = this.gridOptions.paginationPageSize;

   this.http.post(AppUtils.INCIDENT_SEARCH, this.myForm.value, {headers: headers}).subscribe(res=>{
             this.rowData = res.json().result;
     console.log("@@@@" +JSON.stringify(this.rowData));
         }, err=>{             
         });

    }
}

Пробное решение (не работает)

вызывая сетку на кнопке поиска, нажмите вот так

 private search() {
     this.gridOptions.api.setDatasource(this.dataSource);
   }

Я добавил источник данных, чтобы включить разбиение на страницы на стороне сервера, тогда как я могу вызвать этот источник данных?

Есть ли помощь в разбивке на страницы ag-grid? Как загрузить источник данных?

добавлен плункер http://plnkr.co/edit/qIeONaAe4INyTuZTGAOK?open=app%2Fapp.component.ts&p=preview


person Rosh    schedule 07.03.2017    source источник
comment
любой ответ был бы хорош :)   -  person Rosh    schedule 11.03.2017
comment
Здесь есть пример того, как это сделать, ag-grid. com / javascript-grid-pagination / # gsc.tab = 0   -  person K Scandrett    schedule 17.03.2017
comment
Вы уже решили эту проблему?   -  person supertonsky    schedule 06.09.2017
comment
Вы используете dataSource и rowData вместе. Попробуйте удалить rowData.   -  person Niels Steenbeek    schedule 07.09.2017


Ответы (1)


Я думаю, вам придется импортировать ag-сетку внутри корневого модуля @ngmodules

внутренний импорт

@NgModule({
    declarations: [ // put all your components / directives / pipes here

    ],
    imports: [ // put all your modules here
       ag-grid //for example
    ],
    providers: [ // put all your services here

    ],
    bootstrap: [ // The main components to be bootstrapped in main.ts file, normally one only
        AppComponent
    ]
})
person Engineer    schedule 07.03.2017
comment
Все, что добавить сетку, работало нормально, я пробовал добавить разбиение на страницы. Как только источник данных добавлен, он не выполняет этот источник данных. - person Rosh; 07.03.2017