2011-02-23 26 views
5

저는 jqGrid를 처음 사용하기 때문에 알아낼 수없는 시나리오에 대한 도움이 필요합니다.jqGrid에서 셀을 동적으로 편집하는 방법

나는 다음과 같은 코드를 사용하여 셀을 취소 편집 할 수 있어요 :

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

지금 내가 어떤 조건에 따라 다시 셀이 편집 가능한 만들고 싶어.

달성하기 위해 어떤 수업을 사용해야합니까?

사용할 수있는 '편집 가능한 셀'클래스가 있습니까? 당신은 셀 (<td> 요소)

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

당신은 당신이 편집 가능하게 할 모든 세포 (<td> 요소)를 선택해야합니다에서 '- 편집 할 수없는 셀'클래스를 제거해야합니다

답변

8

.

이 작업을 수행하는 방법을 보여주는 the demo을 만들었습니다. 데모에서 가장 중요한 코드는 텍스트 "테스트"를 갖는 '클라이언트'열에서 세포가 "불가능한"로 표시됩니다 데모에서

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); 
}); 

입니다. 나중에 셀을 "편집 가능"또는 "편집 불가능"으로하여 해당 버튼을 클릭 할 수 있습니다.

+0

답장 올렉에 대한 Thx. – Abhi

+0

아래 세 줄의 코드를 모두 시도했지만 아무 것도 작동하지 않는 것 같습니다. – Abhi

+0

jQuery ("tr #"+ rowid, jQuery ("# updAssist")). removeClass ('편집 할 수없는 셀'); \t \t \t \t \t jQuery ("tr #"+ rowid) .removeClass ('not-editable-cell'); \t \t \t \t \t jQuery ("# updAssist"). jqGrid ('setCell', rowid, 'precPsProg', ''{편집 가능한 : true}); – Abhi

관련 문제