2011-01-17 5 views
8

मैं कुछ मुद्दों पर कुछ कोशिकाओं हो रही (सच cellEdit के साथ) हो रही है के आधार पर गैर-संपादन योग्य के लिए एक सेल की स्थापना की।JQGrid: गैर संपादन योग्य भले ही स्तंभ संपादन योग्य करने के लिए सेट कर दिया जाता हो: गतिशील रूप से सामग्री

मैं कई मायनों की कोशिश की है, beforeEditCell, formatters, आदि जैसे कोई भी काम करने के लिए लग रहे हैं।

मुझे सबसे नज़दीक मिला है जो कॉलम में एक फॉर्मेटर सेट करके है जिसे मैं संपादन योग्य बनाना चाहता हूं और फिर सेट-सेल का उपयोग 'संपादन-सेल-क्लास' वर्ग (नीचे स्निपेट) सेट करने के लिए कर रहा हूं। पहली बार जब आप सेल पर क्लिक करते हैं, तो दुर्भाग्यवश संपादन मोड में जाता है, लेकिन यदि आप कहीं और क्लिक करते हैं और सेल को फिर से संपादित करने का प्रयास करते हैं, तो यह सफलतापूर्वक अनुपयोगी है।

मैं भी यही Snipped उपयोग करने की कोशिश की है, लेकिन beforeEditCell के अंदर, इसे सफलतापूर्वक संपादित किया जा रहा से सेल बंद हो जाता है लेकिन बदले में 'जमा' ग्रिड। अब आप किसी अन्य सेल का चयन नहीं कर सकते हैं।

function noEditFormatter(cellValue, options, rowObject) { 
    if (cellValue == 'test') 
     jQuery("#grid").jqGrid('setCell', options.rowId, 'ColName', '', 'not-editable-cell'); 
    return cellValue; 
} 

किसी भी मदद की बहुत सराहना की जाएगी।

उत्तर

12

setCell का उपयोग करने का विचार उन कोशिकाओं को 'संपादन-संपादन योग्य' वर्ग जोड़ने के लिए नहीं है जो संपादन योग्य नहीं होना चाहिए सही है। आप ऐसा करने के लिए केवल गलत जगह चुनते हैं। कस्टम फॉर्मेटर के अंदर, ग्रिड अभी तक अंत तक नहीं बनाया जा सकता है। मैं तुम्हें loadComplete या gridComplete उपयोग करने के लिए जांच करने के लिए ग्रिड वर्तमान पृष्ठ के होते हैं और नहीं भी संपादित नहीं के रूप में कुछ कोशिकाओं को चिह्नित करें।

मैं an example जो इस प्रदर्शित तैयार किया। आपके उदाहरण की तरह "टेस्ट" टेक्स्ट वाले सभी कक्षों को गैर-संपादन योग्य के रूप में चिह्नित किया जाता है। जिस तरह से आप एक सेल्स की जांच कर सकते हैं और अन्य कोशिकाओं को गैर-संपादन योग्य के रूप में चिह्नित कर सकते हैं।

+0

धन्यवाद एक गुच्छा, यह पूरी तरह से काम करता है। – Shawn

+0

@ शॉन: आपका स्वागत है! – Oleg

+0

@ ओलेग: मैं प्रत्येक पंक्ति में संपादन योग्य मोड में कुछ कक्षों के साथ लोड करते समय पूर्ण jqgrid चाहता हूं। क्या यह संभव है। मैं खोज के माध्यम से कुछ भी नहीं मिल सकता। कृपया –

3
var cellattr = function(rowId, tv, rawObject, cm, rdata) { 
if(rawObject.locked) return ' class="not-editable-cell"'; 

};

colModel में: प्रत्येक स्तंभ विकल्पों

{name: 'name',index: 'name', editable: true, width: 100, sortable: false, align: 'center', cellattr: cellattr} 
1

जोड़ने मैं अब इस को हल करने के (2015) था और an approach that looks clean पाया: cellbeginedit कि false रिटर्न सेल संपादित करने के लिए अनुमति नहीं है, तो के लिए एक समारोह निर्दिष्ट करें। लिंक किए गए आलेख से लिया गया और संशोधित:

var checkIfRowIsValid = function (rowIndex) { 
    //somehow get cellValue 
    ... 
    if (cellValue == 'test') return false; 
} 
// initialize jqxGrid 
$("#jqxgrid").jqxGrid(
{ 
    source: dataAdapter, 
    editable: true, 
    selectionmode: 'singlecell', 
    columns: [ 
     { text: 'First Name', columntype: 'textbox', datafield: 'firstname', 
     width: 90, cellbeginedit: checkIfRowIsValid}, 
     { text: 'Last Name', datafield: 'lastname', columntype: 'textbox', 
     width: 90, cellbeginedit: checkIfRowIsValid} 
    ] 
}); 
+2

यह उदाहरण jqxGrid का उपयोग कर रहा है। ओपी jqGrid का उपयोग कर रहा है। – svattom

संबंधित मुद्दे