2010-01-27 14 views
20

मैंने documentation पर देखा है लेकिन मुझे कोई जवाब नहीं मिला है। चयनित होने पर पंक्ति को हाइलाइट करने से रोकने का कोई तरीका है? उस पंक्ति को रोकने के लिए या यहां तक ​​कि एक रास्ता भी चुना जा रहा है। मुझे "होवर्रोज़: सच्चा" विकल्प पसंद है, लेकिन आदर्श रूप से मैं एक पंक्ति को ऑन-क्लिक से चुनने से रोकना चाहता हूं।क्या jqGrid पंक्ति को चुनने और/या हाइलाइट करने से रोकना संभव है?

धन्यवाद,

अद्यतन: मैं "hackily" कुछ जो एक अंतरिम ठीक हो रहा है लागू करने में सक्षम किया गया है। मैं बिल्कुल ऐसा वास्तव में नहीं करते हैं और एक बेहतर समाधान की तरह idealy हैं, अगर वहाँ एक है ...

मैं ने पाया है कि जब मैं jqGrid का दृष्टांत अगर मैं विकल्प

onSelectRow: function(rowid, status) { 
    $('#'+rowid).removeClass('ui-state-highlight'); 
} 

गुजरती हैं, जब इसे जोड़ा जाता है तो मैं हाइलाइट को पट्टी कर सकता हूं।

क्या ऐसा करने के लिए कोई और अधिक आदर्श तरीका है?

+0

बस उत्सुक: सभी पंक्तियां, पंक्तियां एक विशिष्ट मानदंड (यानी, "विषम" पंक्तियों) या एक विशिष्ट एकल पंक्ति को पूरा करती हैं? –

+0

कोई भी पंक्ति जिस पर क्लिक किया गया है। jqGrid का प्राकृतिक व्यवहार सीएसएस वर्ग 'ui-state-highlight' को एक पंक्ति में लागू करना है, जब इसे क्लिक किया जाता है। मैं इसे रोकना चाहता हूं। – Mike

उत्तर

50

निम्नलिखित कोड का उपयोग करें: अगर आप मेरी तरह, एक gazillion jqGrids है और हर एक के लिए onSelectRow ओवरराइड करने के लिए नहीं करना चाहते हैं

beforeSelectRow: function(rowid, e) { 
    return false; 
} 
+0

बिल्कुल सही! यह वही तरीका है जिसे मैं करने की कोशिश कर रहा था, मुझे बस हुक करने के लिए सही घटना नहीं मिल सका। धन्यवाद। – Mike

+0

भी आवरण से मेल खाना सुनिश्चित करें। 'beforeselectrow' काम नहीं करता है। –

+1

ध्यान दें कि यह उस पंक्ति पर किसी भी संपादन को अक्षम कर देगा। – FixMaker

2

मुझे लगता है कि आप इसे सीधे सीएसएस में संबोधित कर सकते हैं। आप की संभावना इस काम करने के लिए अपने theme.css से कुछ मान कॉपी करने की आवश्यकता होगी - बस अपने विशिष्ट तालिका

#table_id tr.ui-state-highlight { 
    border: inherit !important; 
    background: inherit !important; 
    color: inherit !important; 
} 

#table_id tr.ui-state-highlight a { 
    color: inherit !important; 
} 

#table_id tr.ui-state-highlight .ui-icon { 
    background-image: inherit !important; 
} 

मैं सिर्फ एक उदाहरण के रूप में इस्तेमाल किया मूल्य inherit के लिए ui-राज्य के मुख्य आकर्षण के लिए मूल्यों को भी पार।

+0

धन्यवाद, मैं इसे सुबह में एक शॉट दूंगा और आपसे वापस आऊंगा। – Mike

+0

ब्राउज़र संगतता के लिए मैं इस कार्यान्वयन को चकमा देने जा रहा हूं। हालांकि यह सीएसएस में इस समस्या को छिपाने के लिए बहुत अच्छा लगता है। वैसे भी +1 धन्यवाद। – Mike

2

कोशिश:

onSelectRow: function(rowid, status) { 
    $("#grid_id").resetSelection(); //Resets (unselects) the selected row(s). Also works in multiselect mode. 
} 

आप दस्तावेजों here पढ़ सकते हैं। आशा है कि यह आप में मदद करता है ...

+0

मेरे समाधान से थोड़ा अधिक सटीक। धन्यवाद। – Mike

6

, यहाँ एक वैश्विक संस्करण है रेगेल के समाधान के लिए जो मेरे लिए अच्छी तरह से काम करता है:

jQuery.extend(jQuery.jgrid.defaults, { 
    onSelectRow: function(rowid, e) { 
     $('#'+rowid).parents('table').resetSelection(); 
    } 
}); 
+0

बहुत अच्छा। मुझे लगता है कि केवल वे लोग जिनके पास लटकते इन चीजों का पूरा समूह है, आपके उत्तर +1 –

+0

की सराहना करेंगे यह एक अच्छा जवाब है। रीसेट चयन का उपयोग करके आप इसे संरक्षित कर सकते हैं onSelectRow कार्यक्षमता और अभी भी चयन को साफ़ करें (मेरे पास एक कस्टम चेकबॉक्स कार्यान्वयन है जो पंक्ति क्लिक पर चेकबॉक्स को भी टॉगल करता है; यह मेरे कोड को गंदा चयन रंग के बिना काम करने की अनुमति देता है :)) – NKCSS

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