jqGrid

2011-02-23 15 views
5

में सेल संपादन योग्य गतिशील बनाने के लिए कैसे करें मैं jqGrid में नया हूं और मुझे उस परिदृश्य के साथ मदद की ज़रूरत है जिसे मैं समझ नहीं पा रहा हूं।jqGrid

मैं निम्नलिखित कोड का उपयोग कर एक सेल संपादन न करने योग्य बनाने के लिए कर रहा हूँ:

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

अब मैं सेल फिर से संपादन योग्य कुछ शर्त के आधार पर बनाना चाहते हैं।

मुझे यह प्राप्त करने के लिए किस वर्ग का उपयोग करना चाहिए?

क्या कोई 'संपादन योग्य-सेल' वर्ग है जिसका मैं उपयोग कर सकता हूं?

उत्तर

8

आप सेल (<td> तत्व)

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

आप सभी कोशिकाओं (<td> तत्व) है जो आप संपादन योग्य बनाने चाहते हैं का चयन करना चाहिए से 'नहीं संपादन योग्य सेल' वर्ग निकाल देना चाहिए।

मैंने 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 ("# ​​updateAssist"))। RemoveClass ('संपादन-योग्य नहीं'); \t \t \t \t \t jQuery ("tr #" + rowid) .removeClass ('संपादन-योग्य नहीं'); \t \t \t \t \t jQuery ("# ​​updAssist")। JqGrid ('setCell', rowid, 'precPsProg', '', {editable: true}); – Abhi