2010-09-28 10 views
6

जब आप अपने माउस के साथ इसे घुमाते हैं तो आप पंक्ति को हाइलाइट करने से ग्रिड को प्रोग्रामिक रूप से अक्षम कैसे कर सकते हैं? कुछ समय पर इसे अक्षम करना चाहते हैं।jqGrid अक्षम पंक्ति को हाइलाइट करना

$('#result-close').click(function() { 
     //Turn off hover highlighting 
     $("#list").unbind('mouseover'); 
     $("#list").unbind('mouseout'); 

     //Highlight row      
     $("#" + selid).effect("highlight", {}, 5000); 

     //Turn on hover highlighting 
     setTimeout(function(){ 
        $("#list").bind('mouseover',function(e) { 
         ptr = $(e.target).closest("tr.jqgrow"); 
         if($(ptr).attr("class") !== "subgrid") { 
          $(ptr).addClass("ui-state-hover"); 
         } 
         return false; 
        }).bind('mouseout',function(e) { 
         ptr = $(e.target).closest("tr.jqgrow"); 
         $(ptr).removeClass("ui-state-hover"); 
         return false; 
        }); 
     }, 2000);   

     $('#dialog').dialog("close"); 
    }); 

उत्तर

22

hoverrows:falseoption का उपयोग करें।

+0

मैं इसे प्राप्त कर सकता हूं जब मैं प्रारंभिक ग्रिड कॉन्फ़िगरेशन में इसे सेट करता हूं तो काम करने के लिए। लेकिन अगर मैं '$ ("# list") का उपयोग कर प्रारंभिक लोड के बाद इसे सेट करने का प्रयास करता हूं। सेट ग्रिडपाराम ({होवर्रोज़: सच्चा});' नई सेटिंग प्रभावित नहीं होती है। ग्रिड को पुनः लोड करने का प्रयास किया ('$ (" # list ")। ट्रिगर (" रीलोड ग्रिड ");') संपत्ति बदलने के बाद, लेकिन यह काम नहीं कर रहा था। दस्तावेज़ कहते हैं कि यह बदला जा सकता है .. कोई विचार? –

+0

@ मार्कस: आप पृष्ठ पर तालिका में सही हैं http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options। मुझे लगता है कि यह दस्तावेज़ीकरण में एक त्रुटि है। फिर भी आप '$ (" # list ") के संबंध में पंक्तियों की गतिशील रूप से ** एक बार ** को बंद कर सकते हैं। Unbind ('mouseover'); $ (" # list ")। Unbind ('mouseout');' । Http://www.ok-soft-gmbh.com/jqGrid/Pager.htm पर डेमो देखें ("होवर पंक्ति अक्षम करें" पर क्लिक करें)। आप प्रारंभिक स्थिति को बहाल इतना आसान नहीं कर सकते हैं। इसे पुनर्स्थापित करने के लिए आपको संबंधित कार्यों में एक बार और घटनाओं को बाध्य करना होगा (grid.base.js लाइन 2109-2119 देखें) – Oleg

+0

@Marcus: http://github.com/tonytomov/jqGrid/blob/master/ पर देखें जेएस/grid.base.js # एल 2111 (लाइन 2111-2121) जिसका उपयोग 'होवर्रोज़: सच्चा' – Oleg

0

एक सरल गूगल खोज इस स्रोत का पता चला:


यह ओलेग से कोड है जो काम किया है। http://www.trirand.net/examples/appearance/highlight_on_hover/default.aspx

"डिफ़ॉल्ट रूप से, jqGrid hightlight पंक्तियों हॉवर पर यह द्वारा नियंत्रित किया जाता उपस्थिति सेटिंग्स। हाइलाइट रोशऑनहोवर प्रॉपर्टी - इसे गलत पर सेट करने से उसे अक्षम कर दिया जाएगा। "

+0

देखा कि। उस ऑब्जेक्ट को सेट करने का तरीका कोई जावास्क्रिप्ट उदाहरण नहीं मिला। किसी भी तरह .NET कोड द्वारा नियंत्रित किया जाता है .. ?? –

+0

अजीब। की एक संपत्ति की तरह दिखता है। आप इस प्रश्न में दिए गए कोड में कार्रवाई में उपस्थिति सेटिंग देख सकते हैं: http://stackoverflow.com/questions/2058692/how-to-change-a-specific-rowdata-value-in-a-jqgrid – ChessWhiz

0

मैं वर्तमान में एक मध्यवर्ती समारोह है कि सिर्फ मौजूदा हैंडलर कॉल करता है, तो ग्रिड सक्षम किया गया है के साथ मौजूदा माउसओवर हैंडलर की जगह कर रहा हूँ इस प्रकार:

var enabled = true; 
var jqe = jQuery("#grid"); 
var mouseover = jqe.data('events').mouseover[0].handler; 
jqe.unbind('mouseover'); 
jqe.bind('mouseover', function() { 
    if (enabled) { 
     mouseover.apply(this, arguments); 
    } 
}); 

इस तरह से मैं jqgrid नकल की जरूरत नहीं है घटना कोड

मुझे माउसओवर [0]। हैंडलर का उपयोग पसंद नहीं है, लेकिन यह इस पल के लिए काम करता है।