如何动态隐藏jqgrid列

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

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

我们怎样才能在jqgrid中动态隐藏.show列。 我有一个会话变量来检查登录用户是否是管理员。

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

请帮忙..

使用此代码,

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

愿这对你有所帮助。

这个工作:

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

较新的API

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

较旧的API

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

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

我今天不得不深入研究一些传统的东西。 其中一个要求是有条件地设置某些列的可见性。 页面上有一个下拉列表,用于在网格的where子句中设置类别参数。 长话短说,观看下拉的变化事件是不可能的,这使得答案中的大部分方法无效。

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

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

并且如果下拉值具有隐藏的校准值应该是假的,如果校准不是隐藏的值应该是真的,那么它就简单地说明了。

也可以缩短它;

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

虽然我没有测试过。