6

I am new to jqGrid and I need help with a scenario that I am not able to figure out.

I am able to make a cell un-editable using the following code:

jQuery("#updAssist").jqGrid('setCell',rowid,'precPsProg','','not-editable-cell'); 

Now I want to make the cell editable again based on some condition.

What class should I use to achieve that?

Is there a 'editable-cell' class that I can use?

1 Answer 1

8

You should remove 'not-editable-cell' class from the cell (<td> element)

td.removeClass('not-editable-cell'); 

You should select all cells (<td> element) which you want make editable.

I made the demo which demonstrate how to do this. The most important code fragment from the demo is

var grid = $("#list"); var getColumnIndexByName = function(gr,columnName) { var cm = gr.jqGrid('getGridParam','colModel'); for (var i=0,l=cm.length; i<l; i++) { if (cm[i].name===columnName) { return i; // return the index } } return -1; }; var changeEditableByContain = function(gr,colName,text,doNonEditable) { var pos=getColumnIndexByName(gr,colName); // nth-child need 1-based index so we use (i+1) below var cells = $("tbody > tr.jqgrow > td:nth-child("+(pos+1)+")",gr[0]); for (var i=0; i<cells.length; i++) { var cell = $(cells[i]); //var cellText = cell.text(); var unformatedText = $.unformat(cell,{rowId:cell[0].id, colModel:gr[0].p.colModel[pos]},pos); if (text === unformatedText) { // one can use cell.text() instead of // unformatedText if needed if (doNonEditable) { cell.addClass('not-editable-cell'); } else { cell.removeClass('not-editable-cell'); } } } }; grid.jqGrid({ datatype: "local", ... cellEdit: true, cellsubmit: 'clientArray', loadComplete: function() { changeEditableByContain(grid,'name','test',true); } }); $("#doEditable").click(function(){ changeEditableByContain(grid,'name','test',false); }); $("#doNonEditable").click(function(){ changeEditableByContain(grid,'name','test',true); }); 

In the demo the cells from the 'Client' column having the text "test" will be marked as "non-editable". Later one can make the cells "editable" or "non-editable" be clicking on the corresponding button.

Sign up to request clarification or add additional context in comments.

4 Comments

jQuery("tr#"+rowid, jQuery("#updAssist")).removeClass('not-editable-cell'); jQuery("tr#"+rowid).removeClass('not-editable-cell'); jQuery("#updAssist").jqGrid('setCell',rowid,'precPsProg','',{editable: true});
What I want to achieve is to enable a cell as editable based on the value of a cell. Is there a way of doing that. I read that dynamically I can add the 'non-editable-cell' class to make the cell un-editable, but could not find any post which tells how to enable a cell for editing dynamically.
@Abhi: At the beginning I made an error in my answer: I used <tr> instead of <td>. I rewrite my answer and included the demo ok-soft-gmbh.com/jqGrid/NonEditableCellsDynamic.htm which demonstrate how to do what you need.
Thx for all ur help Olge! I will give it a shot and let you know how it goes. Thanks once again.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.