“调整列大小” 功能允许调整每个列的大小。
要启用, 必须包含 “ui.grid.resizeColumns” 模块, 并且必须在表格元素上包括 ui-grid-resize-columns 的指令。
“调整列大小” 功能的文档在 api 文档中提供, 特别是:
可以将单独的列设置为not resizeable,如果这样做, 建议将这些列设置固定的像素宽度,否则, 如果其他列的大小减小,则可能会自动调整大小以填满剩余空间,并且不会再减小其宽度。
当调整列的大小时 其他具有固定宽度或已调整大小的列会保留其宽度。所有其他列都调整大小以占用剩余空间。只要左边列有一个可变列, 表格的列将不会减少到整个表格宽度以内,但一旦调整了所有列的大小, 最终就可以得到小于表格宽度的总列宽。
angular.module('yourApp', ['ui.grid', 'ui.grid.resizeColumns']);
<div ui-grid="gridOptions" class="grid" ui-grid-resize-columns></div>
如果出于某种原因, 希望使用 ui-grid-resize-columns的指令, 但不允许进行列调整, 则可以显式将该选项设置为 false。这可以防止表格调整大小, 而不需要在 colDef 选项中单独设置。
$scope.gridOptions = {
enableColumnResizing: false
};
通过将 enableColumnResizing 属性设置为 false, 可以在列定义中禁用它。
$scope.gridOptions = {
enableColumnResizing: true,
columnDefs: [
{ field: 'name' },
{ field: 'gender', enableColumnResizing: false },
{ field: 'company' }
]
};
代码
index.html
<!doctype html>
<html ng-app="app">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular-touch.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular-animate.js"></script>
<script src="http://ui-grid.info/docs/grunt-scripts/csv.js"></script>
<script src="http://ui-grid.info/docs/grunt-scripts/pdfmake.js"></script>
<script src="http://ui-grid.info/docs/grunt-scripts/vfs_fonts.js"></script>
<script src="/release/ui-grid.js"></script>
<script src="/release/ui-grid.css"></script>
<script src="app.js"></script>
</head>
<body>
<div ng-controller="MainCtrl">
<strong>Drag</strong> a the column separator to resize; <strong>double-click</strong> to size according to rendered column contents.
<br>
<br>
The column will obey any <i>minWidth</i> or <i>maxWidth</i> constraints you give it.
<br>
<br>
<div ui-grid="gridOptions" class="grid" ui-grid-resize-columns ui-grid-move-columns></div>
</div>
</body>
</html>
main.css
.grid {
width: 500px;
height: 400px;
}
app.js
var app = angular.module('app', ['ngTouch', 'ui.grid', 'ui.grid.resizeColumns', 'ui.grid.moveColumns']);
app.controller('MainCtrl', ['$scope', '$http', function ($scope, $http) {
$scope.gridOptions = {
enableSorting: true,
columnDefs: [
{ field: 'name', minWidth: 200, width: 250, enableColumnResizing: false },
{ field: 'gender', width: '30%', maxWidth: 200, minWidth: 70 },
{ field: 'company', width: '20%' }
]
};
$http.get('/data/100.json')
.success(function(data) {
$scope.gridOptions.data = data;
});
}]);
Demo
列服从设置中的 minWidth 或 maxWidth 约束。
文章来源:西柚叨叨的个人博客