web-dev-qa-db-ja.com

jqgrid列を動的に非表示にする方法

私のasp.net MVC Webアプリケーションにjqgridを実装しています。

私のグリッドでは、2つの列を編集および削除しています。削除は、ユーザーがadminとしてログインしている場合にのみ表示されます。

Jqgridの列を動的に非表示にするにはどうすればよいですか。ログインしたユーザーが管理者かどうかを確認するためのセッション変数があります。

私はJavaScriptでその変数にアクセスしています。しかし、jqgridで列を非表示/表示する方法はわかりません

助けてください..

14
Sai Avinash

これはうまくいきました:

$("#list").hideCol("ColumnName")
14
Sai Avinash

このコードを使用して、

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

これがあなたを助けますように。

19
Vinoth Krishnan

新しいAPI

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

古いAPI

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

これは、jsを使用してセキュリティを管理するためのベストプラクティスではありません。サーバー側でこの列を表示しないでください!

2
Suwer

今日はレガシーなものに飛び込む必要がありました。要件の1つは、一部の列の可視性を条件付きで設定することでした。グリッドのwhere句にカテゴリパラメータを設定するページにドロップダウンがありました。要するに、ドロップダウンの変更イベントを監視することは不可能であり、回答のほとんどのメソッドが無効になりました。

非表示パラメーターで三項を使用して、可視性を設定することができました。

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

そして、ドロップダウンのキャリブレーションの値が非表示である場合はfalseになり、キャリブレーションが非表示の場合はtrueになるはずです。

それを短くすることもできるかもしれません。

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

私はそれをテストしていませんが。

1