我正在我的asp.net MVC Web应用程序中实现jqgrid。
在我的网格中,我有两列编辑和删除。仅当用户以管理员身份登录时,删除才可见。
我们如何在jqgrid中动态隐藏.show列。我有一个会话变量来检查登录用户是否是Admin。
我在javascript中访问该变量。但是,不知道如何隐藏/显示jqgrid中的列
请帮助..
答案 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
尽管我还没有测试过。