2016-10-28 21 views
1

角度ui-gridを自動的に高さのサイズを変更しようとすると、すべての行がスクロールバーを必要とせずに表示されますが、グリッド内の2行だけです。誰かが同様の質問(Angular ui-grid dynamically calculate height of the grid)を求めましたが、問題は行の高さが一定であることを前提としています。行の高さが異なる場合(たとえば、折り返しを有効にしているため)、問題のソリューションは一定の行の高さを前提としているため、問題の解決策(https://stackoverflow.com/a/28706349/877570)は機能しません。大量のテキストを含むセルがあり、テキストが次の行に折り返された場合、その行の高さは異なります。角度ui-gridの高さが一定でない場合の高さ

私はここで、ユーザによる可能な解決策を見つけたanhkind:(https://github.com/angular-ui/ui-grid/issues/1735

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

「そしてもちろんminRowsToShowとvirtualizationThresholdのは、リストのサイズに設定する必要があります。」

しかし、彼のソリューションを配備すると、グリッドをレンダリングするのにかなりの時間がかかります。

誰かがこれに対処する方法を知っていますか、代替ソリューションがありますか?

答えて

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; 
      } 
     } 
    }; 
+0

_minRows = 1に設定することができ、データがない場合は常に少なくとも1つの行になります。それ以外の場合は常に_maxRowsまでの.data []のサイズになります(また、その高さを設定するか、常にデータ[]の占有になるようなロジックを変更できます)。 –

+0

あなたが書いた理由のために提案したCSSルールは使用しません。 –

+0

最後のコメント.data []が変更されるたびにsetMinRowsLogic()を呼び出します。 –

関連する問題