有没有办法动态设置Angularjs ui网格的列宽度?
有没有一种方法可以通过编程动态地更改Angularjs的ui网格中的列宽度 我已尝试更改$scope.gridOptions.columnDefs[I].width,但没有任何效果 之所以这样做,是因为我设置了ui grid resize columns指令,允许用户调整最初设置为百分比宽度的列的大小。但是,只要用户进行任何手动修改,列大小都将变为静态,不再随表的总宽度而增长或收缩 我想添加一个“autofit”按钮,允许用户将列大小定义恢复为百分比(基于其当前手动设置的比例),总计为100%。理想情况下,列将再次开始调整以适应表大小的变化有没有办法动态设置Angularjs ui网格的列宽度?,angularjs,angular-ui-grid,Angularjs,Angular Ui Grid,有没有一种方法可以通过编程动态地更改Angularjs的ui网格中的列宽度 我已尝试更改$scope.gridOptions.columnDefs[I].width,但没有任何效果 之所以这样做,是因为我设置了ui grid resize columns指令,允许用户调整最初设置为百分比宽度的列的大小。但是,只要用户进行任何手动修改,列大小都将变为静态,不再随表的总宽度而增长或收缩 我想添加一个“autofit”按钮,允许用户将列大小定义恢复为百分比(基于其当前手动设置的比例),总计为100%。
我可以看到用户经常点击F5来获得这种效果(我会的!),不知不觉中导致整个页面从头开始重新加载,不必要地消耗了大量服务器资源。我想一个不愉快的选择是从一开始就让它们保持静止,消除这种诱惑 更改columnDef宽度不起作用,因为已经从columnDefs构建了GridColumn,ui网格只监视columnDefs数组的更改,而不监视单个columnDef属性。您可以做的是在GridColumn对象上为列设置新列宽。这对我有用
$scope.grid.getColumn('my-column').width = $newWidth;
$scope.grid.refresh();
您还可以删除并重新添加具有已更改宽度属性的列,因为这会触发网格从columnDefs重新生成GridColumns,尽管我没有测试过这一点,而且前者似乎更简单。函数SetColumnDynamicWidth(){
function SetColumnDynamicWidth() {
var cols = _.filter($scope.gridOptions.columnDefs, function (c) {
return c.visible != false;
});
var maxWidth = document.documentElement.clientWidth / cols.length;
for (var i = 0; i < cols.length; i++) {
cols[i].maxWidth = parseInt(maxWidth);
}
}
var cols=u2;.filter($scope.gridOptions.columnDefs,函数(c){
返回c.visible!=false;
});
var maxWidth=document.documentElement.clientWidth/cols.length;
对于(变量i=0;i
如果已从所有列中设置$scope.gridOptions.columnDefs,请删除maxWidth表单。
在列定义中设置宽度:“*”
同样,您也可以为minWidth
这种解决方案对于大分辨率屏幕非常有用。您可以将ui网格扩展到大屏幕的所有魔药,并等分所有列的宽度
您可以避免以下类型的ui网格问题
整洁,效果不错!对于其他感兴趣的人,让我澄清一下,它是gridApi.grid.columns,您可以迭代每个列,如果您使用这些列,第一列是行选择器(因此不要调整大小)。我在任何地方都找不到getColumn方法,但事实证明,我并不需要一个方法来完成我所要做的事情。