Angular ng- grid - hide/remove 来自列菜单的列输入

Angular ng- grid - hide/remove column input from column menu

当您使用具有真值的标志 'showColumnMenu' 时。 ng-grid 使用右端顶部面板上的按钮呈现。

使用此按钮我们可以 hide/show 网格上的列。

在我的案例中,我不想让某些列在网格上可见 - 这意味着我希望列菜单框在没有某些列的情况下呈现。

我创建了 plunker 来证明我的问题

> http://plnkr.co/edit/VXOzBIRfyY3FoCTct9PI?p=preview

在那个 plnkr - 我使用 (visible: false) 将列 'Id' 设置为不可见 但是如果用户点击右端面板的列菜单 他将能够将其设置为可见..

编辑

我需要介绍的另一种情况是存在其他一些情况 列说 'name' 我不希望让用户在列菜单中配置它(通过将其设置为不可见) - 这意味着列 'name' 必须始终在网格上! 并且用户不需要在列菜单中看到它..

所以,如果我能在列菜单中隐藏这些列(id、名称)就好了 我的问题将得到解决..

谢谢!

为什么不直接关闭列菜单?听起来您基本上不想使用它。当您的用户无法控制任何其他列时,能够隐藏年龄列对他们来说很重要吗?

为了隐藏 ID,我建议首先不要放入列列表。即使您不将其包含在网格中,它仍将存在于数据中并可由您的代码访问。网格只是一个向用户显示信息的地方,所以不要把你不想显示的信息放在那里。

编辑:查看 UI-Grid,Ng-Grid 项目的更新版本:http://ui-grid.info/ 对于这种情况,它有一个新的 ColumnDef 属性, "EnableHiding"。 这是他们从 ng-grid 升级的文档:http://ui-grid.info/docs/#/tutorial/099_upgrading_from_2

您可以在 ng-grid 源文件

中稍微编辑一下 menuTemplate.html
  1. 查找从 :$templateCache.put('menuTemplate.html',
  2. 开始的行

和行

<label><input ng-disabled=\"col.pinned\" type=\"checkbox\" class=\"ngColListCheckbox\" ng-model=\"col.visible\"/>{{col.displayName}}</label>\r" +

改为

<label ng-hide=\"col.colDef.alwaysVisible\"><input ng-disabled=\"col.pinned\" type=\"checkbox\" class=\"ngColListCheckbox\" ng-model=\"col.visible\"/>{{col.displayName}}</label>\r" +

现在您可以添加

alwaysVisible:true

到 columnDefs 就完成了

请在此处查看工作演示 http://plnkr.co/edit/qmoILJ5LTMSlH7Uv9Rw8?p=preview