2010-07-14 12 views
9

मैं jqgrid कस्टम फ़ॉर्मेटर में ऐसा करने से पाठ का रंग बदल सकते हैं:मैं एक jqgrid कस्टम फॉर्मेटर में किसी सेल के पृष्ठभूमि रंग को कैसे बदल सकता हूं?

function YNFormatter(cellvalue, options, rowObject) 
{ 
    var color = (cellvalue == "Y") ? "green" : "red"; 
    var cellHtml = "<span style='color:" + color + "' originalValue='" + 
           cellvalue + "'>" + cellvalue + "</span>"; 

    return cellHtml; 
} 

लेकिन मैं अब पूरी कोशिका (बजाय पाठ रंग) की पृष्ठभूमि रंग बदलना चाहते हैं।

क्या यह संभव है?

+1

अद्यतन उत्तर की जांच करें। – simplyharsh

+0

@harshhh - मैं एक और टिप्पणी – leora

+0

जोड़ा तुम बस का उपयोग करना चाहिए 'color'' 'के बजाय' की पृष्ठभूमि color'' 'और सेट अतिरिक्त शैली'' पृष्ठभूमि छवि ':' none'' पृष्ठभूमि छवि से विरासत में मिली दूर करने के लिए jQuery यूआई कक्षा 'यूई-विजेट-सामग्री'। यदि आप अतिरिक्त रूप से होवरिंग या/और चयनित पंक्तियों के लिए मानक रंग का उपयोग करना चाहते हैं तो आप http://stackoverflow.com/questions/4956949/make-selected-color-highest-level-in-jqgrid/4960622# में वर्णित तकनीक का उपयोग कर सकते हैं 4960622 – Oleg

उत्तर

20

आप कस्टम सेल फ़ॉर्मेटर आप कस्टम फ़ॉर्मेटर

return '<span class="cellWithoutBackground" style="background-color:' + 
     color + ';">' + cellvalue + '</span>'; 

जहां span.cellWithoutBackground की शैली आप कर सकते हैं से लौट सकते हैं के अंदर <span> तत्व उपयोग करना चाहते हैं उदाहरण के लिए परिभाषित करें जैसे

span.cellWithoutBackground 
{ 
    display:block; 
    background-image:none; 
    margin-right:-2px; 
    margin-left:-2px; 
    height:14px; 
    padding:4px; 
} 

यह कैसे काम करता आप लाइव here देख सकते हैं: enter image description here

UPDATED: जवाब पुराना है। सर्वोत्तम कस्टम प्रैक्टर्स के बजाय colModel में cellattr कॉलबैक का सबसे अच्छा अभ्यास करना होगा। सेल के पृष्ठभूमि रंग को बदलना आम तौर पर कॉलम की कोशिकाओं (<td> तत्वों) में style या class विशेषता निर्दिष्ट करता है। cellattrcolModel के कॉलम में परिभाषित कॉलबैक वास्तव में ऐसा करने की अनुमति देता है। कोई भी पूर्वनिर्धारित स्वरूपणformatter: "checkbox", formatter: "currency", formatter: "date" और इसी तरह का उपयोग कर सकता है, लेकिन फिर भी कॉलम में पृष्ठभूमि रंग बदल सकता है। उसी तरह rowattr कॉलबैक, जो jqGrid विकल्प (colModel के विशिष्ट स्तंभ के बाहर) के रूप में परिभाषित किया जा सकता है, पूरी पंक्ति (<tr> तत्व) की शैली/वर्ग आवंटित करने के लिए अनुमति देता है।

cellattr के बारे में अधिक जानकारी here और here पाया जा सकता है, उदाहरण के लिए। Another answer बताता है rowattr

0

यहाँ

$("#cell").setCell(Row , Column, Value, { background: '#888888'}); 

वास्तव में आप भी, कस्टम फ़ॉर्मेटर की जरूरत नहीं होगी अगर आप सिर्फ रंग की स्थापना के लिए यह करने के लिए करना चाहते हैं। तुम भी, यहां से की तरह रंग मूल्य निर्धारित कर सकते हैं

var color = (Value == "Y") ? "green" : "red"; 
$("#cell").setCell(Row , Column, Value, { background: '#888888', color: color}); 

मुबारक कोडिंग।

+0

@harshh - क्या आप इस लाइन को मेरे कस्टम फॉर्मेटर कोड फ़ंक्शन में डालने के लिए कह रहे हैं? – leora

+0

@harshh - मैं वास्तव में इसे कस्टम फॉर्मेटर के रूप में करना चाहता हूं क्योंकि मेरे पास अन्य डेटा गुणों के आधार पर कुछ सशर्त तर्क हैं। इसके अलावा, आप पंक्ति, कॉलम और मूल्य कहां से प्राप्त कर रहे हैं? – leora

+0

@ooo: आपको कस्टम फॉर्मेटर का उपयोग नहीं करना चाहिए। इसके बजाय आप 'loadComplete' ईवेंट के अंदर कुछ कक्षों का पृष्ठभूमि रंग बदल सकते हैं। आप 'getDataIDs' विधि के संबंध में लोड किए गए डेटा के आईडी प्राप्त कर सकते हैं, फिर' getCell' के साथ एक लूप में सेल डेटा प्राप्त करें और डेटा पैरामीटर के रूप में खाली स्ट्रिंग का उपयोग करके 'setCell' के साथ सेल की शैली बदलें (http: विवरण के लिए //www.trirand.com/jqgridwiki/doku.php?id=wiki:methods)। आप अतिरिक्त रूप से 'फॉर्मेटर: चेकबॉक्स' का भी उपयोग कर सकते हैं। – Oleg

0

यहाँ मैं क्या किया है:

jQuery("#grid_id").jqGrid({ 
    ... 
     colModel: [ 
      ... 
      {name:'price', index:'price', width:60, align:"center", editable: true, formatter:myFmatter}, 
      ... 
     ], 
     afterInsertRow: function(rowId, data) 
     { 
      $("#grid_id").setCell(rowId, 'price', '', {'background-color':'#' + data.colorHEX}); 
     } 
... 
}); 
संबंधित मुद्दे