如果行具有非恒定高度

时间:2016-10-28 19:03:16

标签: angular-ui-grid

我正在尝试使角度ui-grid自动调整高度,以便显示所有行而不需要其滚动条,但如果网格中只有几行,则不会浪费空间。有人问了一个类似的问题(Angular ui-grid dynamically calculate height of the grid),但这个问题预先假定行高是不变的。如果行高不同(例如,因为您启用了自动换行),则问题的解决方案(https://stackoverflow.com/a/28706349/877570)将无效,因为问题的解决方案假设行高不变。如果我有一个包含大量文本的单元格,并且文本换行到下一行,则行高度不同。

我在这里找到了用户anhkind的可能解决方案:(https://github.com/angular-ui/ui-grid/issues/1735

.ui-grid, .ui-grid-viewport {
  height: auto !important;
}

“当然,minRowsToShow和virtualizationThreshold应该设置为列表的大小。”

但是,当我部署他的解决方案时,网格渲染需要更长的时间。

有谁知道如何解决这个问题或者有其他解决方案?

1 个答案:

答案 0 :(得分:0)

    $scope._minRows = 10;
    $scope._maxRows = 10;

   // Lots of Grid Options, plus data setting going on here.

    $scope.agendaItemsGridOptions.onRegisterApi = function(gridApi) {
        //set gridApi on scope
        $scope.gridApi = gridApi;
    });

    var setMinRowsLogic = function() {
        $scope.gridApi.grid.options.minRowsToShow = $scope._minRows;
        if (!_.isUndefined($scope.agendaItemsGridOptions.data)) {
            var len = $scope.agendaItemsGridOptions.data.length;
            if (len > $scope._maxRows) {

                $scope.gridApi.grid.options.minRowsToShow = $scope._maxRows;
            } else
            if (len < $scope._minRows) {
                $scope.gridApi.grid.options.minRowsToShow = $scope._minRows;
            } else {
                $scope.gridApi.grid.options.minRowsToShow = len;
            }
        }
    };