【问题标题】:How to change Angular Kendo UI grid page index programmatically?如何以编程方式更改 Angular Kendo UI 网格页面索引?
【发布时间】:2021-10-06 10:52:54
【问题描述】:

这个问题是asked 8 years ago,但是 Kendo UI 网格已经发展并且现在支持 Angular。原始问题的答案不适用于 Kendo Grid Angular。

我有一个剑道网格,如果数据少于一页,我会在其中隐藏分页控件。

 template: `<kendo-grid #kendoGrid [kendoGridBinding]="gridView"
                        [pageSize]="pageSize" [pageable]="showPaginator()"

在哪里

showPaginator(): boolean {
        return  this.gridView?.length > this.pageSize;
    }

如果第二页上只有一个项目并且我删除了该项目,则网格会显示没有项目但隐藏分页控件的第二页。 我想选择网格的第一行,或者选择网格的第一页但找不到执行此操作的 api 调用。

【问题讨论】:

    标签: kendo-ui kendo-grid kendo-ui-angular2


    【解决方案1】:

    为了选择网格的第一页,您需要使用 Kendo 的网格 state 来更改 skip,例如:

    html

    [pageSize]="state.take"
    [skip]="state.skip"
    

    ts

    public removeItem() {
        //remove the item
        this.state.skip = 0;
        //reload items refreshing grid
    }
    

    如您所见,我也更改了[pageSize]="state.take" 而不是pageSize。你可以在take找到更多信息。

    【讨论】:

      【解决方案2】:

      虽然第一个答案是正确的,但我想发布完整的解决方案,用于在不需要时隐藏分页工具栏,以及在页面上的最后一行被删除时移回页面。

      模板

           template: `<kendo-grid 
                          [kendoGridBinding]="gridView" 
                          [pageSize]="pageSize" [pageable]="showPaginator()" 
                          [skip]="skip"
                          (pageChange)="pageChange($event)">`
      

      组件

      
          skip = 0;  // how many rows to skip
          pageSize: number = 20;
          _gridData = []; // original passed data 
          gridView: any[]; // store a slice of data if any filter are active
      
          // Each time the number of rows in the grid data changes
          // move back from last page if empty (eg deleted last item on last page)
          @Input() set gridData(values: any) {
                    this._gridData = [...values];       
          } else if (values && values.length === 0) {
                this._gridData = [];
          }
          this.gridView = cloneDeep(this._gridData); // set initial view
        
          while ( (this.gridView.length <= this.skip ) && 
                  (this.skip >= this.pageSize)) {
              this.skip = this.skip - this.pageSize;
            }
          }
      
          while ( (this.gridView.length <= this.skip ) && 
                  (this.skip >= this.pageSize)) {
                      this.skip = this.skip - this.pageSize;
                  }
          }
      
          public showPaginator(): boolean {
            return  ((!!this.gridView) && (this.gridView.length > this.pageSize));
        }
      
        // Keep track of the current page.
        public pageChange(event: PageChangeEvent): void {
            this.skip = event.skip;
        }
      

      【讨论】:

        猜你喜欢
        • 2012-12-08
        • 2014-09-21
        • 1970-01-01
        • 2015-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多