views:

5539

answers:

5

Is there any way to hide a column in a jqGrid table, but have it show when the row is edited in the form editor modal dialog?

A: 

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.

Anthony M. Powers
You'll also probably want to bind the hideCol() code in an event that corresponds to the editing being complete, or when the user/editor is doing editing.
Anthony M. Powers
+9  A: 

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.

Bobby Borszich
Thats almost what I'm looking for, except I don't want it to be editable in the edit form. I'm thinking there's no way to do that.
maxpower47
so you want it visible in the edit form but read only then?
Bobby Borszich
yep ---------------
maxpower47
A: 

Try to use edithidden: true and also do

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

Or see jqGrid wiki for custom editing, you can setup any input type, even label I think.

queen3
A: 

Using hideCol doesn't hide the grid column header, leaving a messy looking grid. Does anyone know how to hide the whole column, header included?

Andy Mac
A: 

This thread is pretty old I suppose, but in case anyone else stumbles across this question... I had to grab a value from the selected row of a table, but I didn't want to show the column that row was from. I used hideCol, but had the same problem as Andy where it looked messy. To fix it (call it a hack) I just re-set the width of the grid.

jQuery(document).ready(function() {

       jQuery("#ItemGrid").jqGrid({ 
                ..., 
                width: 700,
                ...
        }).hideCol('StoreId').setGridWidth(700)

Since my row widths are automatic, when I reset the width of the table it reset the column widths but excluded the hidden one, so they filled in the gap.

Aaron