Angular ng-grid - 从列菜单中隐藏/删除列输入

时间:2015-02-04 20:07:55

标签: javascript angularjs grid multiple-columns ng-grid

当您使用旗帜' showColumnMenu'真正的价值。 ng-grid使用右端顶部面板上的按钮进行渲染。

使用此按钮,我们可以隐藏/显示网格上的列。

在我的案例中,我不想让某些列在网格上可见 - 这意味着我希望列菜单框将呈现出一些列。

Iv' e创建了plunker,它证明了我的问题

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

在那个plnkr中 - 我设置了专栏' Id'使用隐藏(可见:false) 但是,如果用户单击右端面板上的列菜单 他将能够将其设置为可见..

修改

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

所以,如果我只能在列菜单中隐藏那些列(id,name) 我的问题将得到解决..

谢谢!

2 个答案:

答案 0 :(得分:1)

你可以在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

答案 1 :(得分:0)

为什么不关闭列菜单?听起来你根本不想使用它。当用户无法控制任何其他年龄栏时,您是否能够隐藏年龄栏是否很重要?

对于隐藏ID,我建议不要首先放入列列表。即使您不将其包含在网格中,它仍将存在于数据中并可由您的代码访问。网格只是向用户显示信息的地方,因此不要在其中放置您不想显示的信息。

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