如何动态隐藏jqgrid列

时间:2013-10-22 11:52:26

标签: c# asp.net-mvc jqgrid show-hide

我正在我的asp.net MVC Web应用程序中实现jqgrid。

在我的网格中,我有两列编辑和删除。仅当用户以管理员身份登录时,删除才可见。

我们如何在jqgrid中动态隐藏.show列。我有一个会话变量来检查登录用户是否是Admin。

我在javascript中访问该变量。但是,不知道如何隐藏/显示jqgrid中的列

请帮助..

5 个答案:

答案 0 :(得分:19)

使用此代码,

jQuery("#list").jqGrid('hideCol',["colModel1_name","colModel2_name"]);
jQuery("#list").jqGrid('showCol',["colModel1_name","colModel2_name"]);

愿这对你有所帮助。

答案 1 :(得分:13)

这个有用:

$("#list").hideCol("ColumnName")

答案 2 :(得分:9)

较新的API

jQuery("#list").jqGrid('hideCol',["ColumnName","ColumnName2"]);

较旧的API

$("#list").hideCol("ColumnName")

答案 3 :(得分:2)

这不是使用js管理安全性的最佳做法。您不应该在服务器端显示此列!

答案 4 :(得分:1)

我今天不得不深入研究一些遗留问题。要求之一是有条件地设置某些列的可见性。页面上有一个下拉列表,用于在网格的where子句中设置类别参数。长话短说,不可能观看下拉列表的更改事件,使此处答案中的大多数方法无效。

我能够在隐藏的参数中使用三元设置可见性。

{
    name: 'mfg',
    index: 'mfg',
    width: 150,
    sortable: true,
    hidden: $('#evCategory').val() == 'Calibration' ? false : true
},

它简单地估算出,如果下拉菜单中隐藏的校准值应该是false,如果不是校准的隐藏值应该是true。

也可以将其缩短为

!$('#evCategory').val() == 'Calibration' || true

尽管我还没有测试过。