Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法动态设置Angularjs ui网格的列宽度?_Angularjs_Angular Ui Grid - Fatal编程技术网

有没有办法动态设置Angularjs ui网格的列宽度?

有没有办法动态设置Angularjs ui网格的列宽度?,angularjs,angular-ui-grid,Angularjs,Angular Ui Grid,有没有一种方法可以通过编程动态地更改Angularjs的ui网格中的列宽度 我已尝试更改$scope.gridOptions.columnDefs[I].width,但没有任何效果 之所以这样做,是因为我设置了ui grid resize columns指令,允许用户调整最初设置为百分比宽度的列的大小。但是,只要用户进行任何手动修改,列大小都将变为静态,不再随表的总宽度而增长或收缩 我想添加一个“autofit”按钮,允许用户将列大小定义恢复为百分比(基于其当前手动设置的比例),总计为100%。

有没有一种方法可以通过编程动态地更改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方法,但事实证明,我并不需要一个方法来完成我所要做的事情。