Hidden Columns in jqGrid Hidden Columns in jqGrid javascript javascript

Hidden Columns in jqGrid


This feature is built into jqGrid.

setup your grid function as follows.

$('#myGrid').jqGrid({   ...   colNames: ['Manager', 'Name', 'HiddenSalary'],   colModel: [                              { name: 'Manager', editable: true },               { name: 'Price', editable: true },               { name: 'HiddenSalary', hidden: true , editable: true,                   editrules: {edithidden:true}                }             ],   ...};

There are other editrules that can be applied but this basic setup would hide the manager's salary in the grid view but would allow editing when the edit form was displayed.


I just want to expand on queen3's suggestion, applying the following does the trick:

editoptions: {               dataInit: function(element) {                           $(element).attr("readonly", "readonly");                         }              }

Scenario #1:

  • Field must be visible in the grid
  • Field must be visible in the form
  • Field must be read-only

Solution:

colModel:[        {  name:'providerUserId',               index:'providerUserId',                width:100,editable:true,                editrules:{required:true},                editoptions:{                             dataInit: function(element) {                                   jq(element).attr("readonly", "readonly");                              }                            }            },],

The providerUserId is visible in the grid and visible when editing the form. But you cannot edit the contents.


Scenario #2:

  • Field must not be visible in the grid
  • Field must be visible in the form
  • Field must be read-only

Solution:

colModel:[           {name:'providerUserId',            index:'providerUserId',             width:100,editable:true,             editrules:{                         required:true,                          edithidden:true                      },            hidden:true,             editoptions:{                   dataInit: function(element) {                                                  jq(element).attr("readonly", "readonly");                           }                      }         },        ]

Notice in both instances I'm using jq to reference jquery, instead of the usual $. In my HTML I have the following script to modify the variable used by jQuery:

<script type="text/javascript">    var jq = jQuery.noConflict();</script>


You can use the following code to hide a table column..

JQuery("tableName").hideCol("colName");

And you can use the following code to show it again.

JQuery("tableName").showCol("colName");

For your question, you can call the hideCol() code on the document.ready(), and you can bind the showCol() code on the dialog's edit/click event.