当所有项目都隐藏在ui-grid时隐藏或刷新元素

时间:2018-11-29 01:53:33

标签: angular-ui-grid

我有一个网格,上面有菜单和项目。

如果我使用内置菜单隐藏了所有项目,我想刷新分页,使其显示0-100个项目。

我发现我遍历所有列的唯一方法是,如果所有列都被隐藏,那么我只会隐藏分页,但这是一个糟糕的解决方案。

http://next.plnkr.co/edit/I3fdjfJDCfoZ8MCH

(使用右侧的网格菜单隐藏所有项目)

现在我这样做:

let allHidden = true;
lodash.forEach(column.grid.columns, function (col) {
    if (col.visible) {
        allHidden = false;
        return;
    }
});
if(allHidden)
    $scope.gridOptions1.enablePaginationControls= false;
else
    $scope.gridOptions1.enablePaginationControls= true;

但是仍然有滚动条,实际上我不喜欢这种解决方案

1 个答案:

答案 0 :(得分:0)

您可以禁用两个滚动条,并稍微更改循环。 仍然是一个肮脏的结构(用您的话说:),因为当您决定取消隐藏任何列时,事情都会变得很混乱……您将必须再次启用两个scollbar。

   gridApi.core.on.columnVisibilityChanged($scope, column => {
          if(!column.grid.columns.some(function(col) {return col.visible}))
          {
            column.grid.options.enablePaginationControls = false;
            column.grid.options.enableHorizontalScrollbar = uiGridConstants.scrollbars.NEVER;
            column.grid.options.enableVerticalScrollbar = uiGridConstants.scrollbars.NEVER;
          }
        });

顺便说一句,您必须注入uiGridConstants才能使用uiGridConstants.scrollbars.NEVER

也许对您的问题有更好的解决方案,但是对我来说不清楚您要在这里实现什么。