Альтернативный способ показать детали гибкой сетки 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() и вручную отобразить содержимое ячейки сетки на основе расчета сетки высоты? Действительно ли это поможет изменить производительность при отображении сетки?