2012-07-26 100 views
0

我有一個jqgrid由一些字段填充。我想要一些細胞是jqgrid設置單元格可動態編輯假條件

editable:true 
基於條件

這裏

editable:false 

是我的功能(編者):

var grid = $("#mygrid"); 
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; 
}; 
function abilitaDisabilitaEditRecord() { 
var pos=getColumnIndexByName(grid,'descrizione'); 
var pos2=getColumnIndexByName(grid,'endDate'); 
var allIds = $('#mygrid').jqGrid('getDataIDs'); 
var cells = $("tbody > tr.jqgrow > td:nth-child("+(pos+1)+")",grid[0]); 
var cells2 = $("tbody > tr.jqgrow > td:nth-child("+(pos2+1)+")",grid[0]); 
for (var i = 0; i < allIds.length; i++) { 
    for (var j=0; j<cells.length; j++) { 
     var cell = $(cells[j]); 
     var cell2 = $(cells2[j]); 
    var checkDataFine = $('#mygrid').jqGrid('getCell', allIds[i], 'date'); 
    if (!checkDataFine==false) { 
     cell.addClass('not-editable-cell'); 
     cell2.addClass('not-editable-cell'); 
     } 
    } 
} 
} 

回答

0

這裏的工作解決方案:

var grid = $("#mygrid"); 
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 -1; 
}; 


function changeEditableByContain() { 
var pos=getColumnIndexByName(grid,'field1'); 
var pos2=getColumnIndexByName(grid,'field2'); 
var pos3=getColumnIndexByName(grid,'field3'); 
var pos4=getColumnIndexByName(grid,'field4'); 
var allIds = $('#mygrid').jqGrid('getDataIDs'); 
var cells = $("tbody > tr.jqgrow > td:nth-child("+(pos+1)+")",grid[0]); 
var cells2 = $("tbody > tr.jqgrow > td:nth-child("+(pos2+1)+")",grid[0]); 
var cells3 = $("tbody > tr.jqgrow > td:nth-child("+(pos3+1)+")",grid[0]); 
var cells4 = $("tbody > tr.jqgrow > td:nth-child("+(pos4+1)+")",grid[0]); 
for (var i = 0; i < allIds.length; i++) { 
     var cell = $(cells[i]); 
     var cell2 = $(cells2[i]); 
     var cell3 = $(cells3[i]); 
     var cell4 = $(cells4[i]); 

    if (condition...) { 
     cell.addClass('editable-cell'); 
     cell2.addClass('editable-cell'); 
     cell3.addClass('editable-cell'); 
     cell4.addClass('editable-cell'); 
     } 
    else{ 
     cell.addClass('not-editable-cell'); 
     cell2.addClass('not-editable-cell'); 
     cell3.addClass('not-editable-cell'); 
     cell4.addClass('not-editable-cell'); 
    } 
} 
} 

,然後調用的onLoadComplete:

changeEditableByContain(); 
0

,你可以在調用此你其他條件,我沒有測試它,但我認爲這應該工作

$(「#mygrid」)。jqGrid('restoreRow',allIds [i]);

+0

這是關於一個單元格屬性,而不是一排屬性 – Franky 2012-07-26 16:04:15

+0

噢,對不起,你要禁用只單元格編輯.. 。你去哥們...這個答案會幫助你http://stackoverflow.com/questions/5092571/how-to-make-cell-editable-dynamically-in-jqgrid – 2012-07-26 16:39:05

+0

讓我知道它是否適合你或不? – 2012-07-26 16:39:26

相關問題