Альтернативный способ показать детали гибкой сетки Wijmo помимо autoSizeRows()?

Я ищу способ вычислить высоту FlexGrid дочерней сетки и использовать эту высоту для изменения размера родительской сетки при отображении содержимого указанной дочерней сетки? Я пытаюсь избежать использования autoSizeRows() для отображения всего содержимого ячеек сетки. Здесь у меня есть немного измененный способ асинхронного открытия FlexGrid:

      function autoSizeRowsAsync(grid: wjcGrid.FlexGrid) {
  try {
    var vr = grid.viewRange;
    var gridHeight = vr.getRenderSize(grid.cells).height; //apply to parent element

    for (let r = vr.topRow; r <= vr.bottomRow; r++) {
      try {
        var _mergedrange = grid.getMergedRange(grid.cells, r, 0);

        if (_mergedrange != null) {
          grid.rows[r].height = grid.rows[r].renderHeight;

          //NOTE: this is the code I aim to replace with something faster
          grid.autoSizeRows(_mergedrange.topRow, _mergedrange.bottomRow);
          grid.refreshRange(_mergedrange);
        }
        else {
          grid.rows[r].height = grid.rows[r].renderHeight;

        }
      } catch { grid.autoSizeRows(r, r); }
    }

    //setTimeout(() => {
    //  grid.autoSizeColumns();
    //  grid.refreshCells(true);
    //}, 300);

  } catch { grid.autoSizeRows(0, 0); }
}

Эта функция TypeScript вызывается в свойстве сетки loadingRows() в html, здесь:

      <!--Parent grid-->
<ng-template wjFlexGridDetail
#dp="wjFlexGridDetail"
let-item="item"
[detailVisibilityMode]="'ExpandMulti'">
    <wj-flex-grid #parentGrid
        [itemsSource]="item.data"
        (loadedRows)="loadedRows(parentGrid, gridMarkers, $event)"
        (initialized)="initializeGrid(parentGrid, $event, false, false, item.label,sdp)">
        <!-- Data and columns here  -->

        <!--Child grid-->
        <ng-template wjFlexGridDetail
        #sdp="wjFlexGridDetail"
        let-item="item"
        [detailVisibilityMode]="'ExpandMulti'"
        [width]="'*'">
            <wj-flex-grid #childGrid
                [itemsSource]="item.otherData"
                [headersVisibility]="item.anyNotFound ? 'Row' : 'None'"
                (loadedRows)="loadedRows(childGrid, gridScenarios, $event)"
                (initialized)="initializeGrid(childGrid, $event, true)">
            </wj-flex-grid>
       </ng-template>
    </wj-flex-grid>
</ng-template>

LoadRows(), которая вызывает мою модифицированную функцию autoSizeRowsAsync():

      public loadedRows(grid: wjcGrid.FlexGrid, parentGrid: wjcGrid.FlexGrid, eve) {
    this.gridSelectionService.addGrid(grid);
    if (grid.columns.visibleLength > 1) {
      this.setAutoSizeColumnsDefault(grid);
    } if (parentGrid != null) {

      setTimeout(() => {
        parentGrid.onLoadedRows();
        autoSizeRowsAsync(parentGrid);
      }, 50);
    }
  }

Есть ли способ отключить autoSizeRows() и вручную отобразить содержимое ячейки сетки на основе расчета сетки высоты? Действительно ли это поможет изменить производительность при отображении сетки?

0 ответов

Другие вопросы по тегам