簡體   English   中英

創建網格后更新 Angular-Slickgrid 中的網格狀態

[英]Update grid state in Angular-Slickgrid after grid creation

在創建 angular-slickgrid 之后設置保存的網格狀態的最佳方法是什么? Grid State/Presets - Wiki解釋了通過設置 gridOptions.presets 來設置加載時保存的狀態。 就我而言,我想在本地存儲中的底層保存狀態發生變化時更新網格狀態(可能是從應用程序的另一個實例中保存的),並將狀態應用於當前的 slickgrid。 如果我更新 gridOptions.presets,是否可以調用一種方法來強制網格使用新預設進行更新?

請注意,我是 Angular-Slickgrid 的作者。

答案是不,它被稱為預設是有原因的,它只在創建網格時才有效……但你仍然可以通過一些方法調用來做到這一點。 因此,如果您真的想使用網格狀態,那么您必須自己保存它,然后在應用所有先前的狀態后重新加載整個網格。 可以動態應用的網格狀態是您可以在示例 4示例 25中看到的過濾器和排序(通過按鈕單擊或像上一個示例一樣的下拉選擇)。 我后來也添加了一種更改列的方法,並且在此 Slickgrid-Universal Example 11下演示了該方法,實際上該演示將准確地向您展示您想要的方式,您可以按照此處的代碼進行操作。

對於簡短的代碼示例,您需要從(onAngularGridCreated)獲取angularGrid實例,然后使用它來動態更改網格。 它向您顯示所有選項,如果您不需要或想要更改該選項,您可以跳過其中任何一個。

angularGridReady(angularGrid: AngularGridInstance) {
    this.angularGrid = angularGrid;
}

  // the `selectedView` should be the result of your Grid State
changeGridView(selectedView: GridState) {
  if (selectedView) {
      const columns = selectedView?.columns ?? [];
      const filters = selectedView?.filters ?? [];
      const sorters = selectedView?.sorters ?? [];
      this.angularGrid.filterService.updateFilters(filters as CurrentFilter[]);
      this.angularGrid.sortService.updateSorting(sorters as CurrentSorter[]);      
      this.angularGrid.gridStateService.changeColumnsArrangement(columns);

      // if you have a frozen grid (pinning)
      this.angularGrid.gridService.setPinning(pinning);
    } else {
      // to reset the grid
      this.angularGrid.filterService.clearFilters();
      this.angularGrid.sortService.clearSorting();      this.angularGrid.gridStateService.changeColumnsArrangement([...this.columnDefinitions].map(col => ({ columnId: `${col.id}` })));

      // if you have a frozen grid (pinning)
      this.angularGrid.gridService.clearPinning();
    }

  // you might want to scroll back to top of the grid if filters are changed
  this.angularGrid.slickGrid.scrollColumnIntoView(0);
}

您可能不需要重新渲染網格,但如果網格 UI 無法正確顯示,您可以通過使其所有行無效來強制重新渲染網格

this.angularGrid.slickGrid.invalidate();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM