2009-10-15 6 views
7

मेरे एप्लिकेशन में कई jqGrids हैं जो लंबवत स्क्रॉलबार की आवश्यकता के लिए पर्याप्त पंक्तियां हो सकती हैं या नहीं हो सकती हैं। लेकिन इन ग्रिड में पंक्तियों को गतिशील रूप से जोड़ा जा सकता है, ताकि उन्हें ग्रिड को अंततः स्क्रॉलबार की आवश्यकता हो।jqGrid - क्या हमेशा एक लंबवत स्क्रॉलबार प्रदर्शित करने का कोई तरीका है?

समस्या यह है कि यदि ग्रिड में स्क्रॉलबार की आवश्यकता के लिए पर्याप्त पंक्तियां नहीं हैं, तो ग्रिड के दाईं ओर खाली जगह है। मैं इसे किसी भी तरह ठीक करना चाहता हूं - या तो हमेशा लंबवत स्क्रॉलबार प्रदर्शित करता है, या किसी भी तरह गतिशील रूप से आवश्यक होने पर इसे जोड़ता है।

मैं ग्रिड के .ui-jqgrid-bdiv div निम्न CSS जोड़ने की कोशिश की:

$("#mygrid").closest(".ui-jqgrid-bdiv").attr("style", 
$("#mygrid").closest(".ui-jqgrid-bdiv").attr("style") + " overflow-y: scroll; "); 

यह:

overflow-y: scroll; 

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

किसी भी मदद की सराहना की जाती है!

उत्तर

14

overflow-y, CSS3 है, और यह अभी तक पूरी तरह किसी भी अन्य शामिल मार्कअप के बिना आईई द्वारा समर्थित नहीं है (आह ...)

तो, मैं केवल 2 सीएसएस चीजें आप इस बारे में क्या कर सकते हैं लगता है, उपयोग करने के लिए है या तो overflow: auto (जो ब्राउज़र को तय करने देगा) या overflow: scroll, जो लंबवत और क्षैतिज स्क्रॉलबार दोनों को मजबूर करेगा।

पूरे ग्रिड को एक छोटे से div में एक न्यूनतम ऊंचाई में लपेटने के लिए एक वर्कअराउंड हो सकता है, ताकि आप ब्राउज़र विंडो + 1px के बराबर सेट कर सकें। इस तरह आप एक लंबवत स्क्रॉलबार को मजबूर करेंगे।

मिनी-ऊंचाई सेट करना सभी ब्राउज़रों में करना मुश्किल हो सकता है, लेकिन मुझे लगता है कि यह उनमें से अधिकांश में बहुत अच्छा काम करता है।

.the-wrapper{ 
    height: auto !important; /* for real browsers*/ 
    height: 601px;   /* IE6 will use this a min-height. Use any height you need - you can even set this using JavaScript depending on the browser window height */ 
    min-height: 601px;  /* for real browsers - same value as height */ 
} 

बेशक, यह ग्रिड के नीचे कुछ जगह जोड़ देगा। विमान में आपका स्वागत है! , सच स्क्रॉल पंक्तियाँ मुझे लगता है कि यह आपके लिए समाधान है:

+0

यह वही है जो मैं अनुशंसा करने जा रहा था। अगर मैं कोई वोट छोड़ देता तो मैं +1 कर दूंगा। –

+1

हाय बॉब, वैसे भी धन्यवाद :) लेकिन अगर आप कल वापस आए तो मुझे कोई फर्क नहीं पड़ता: पी – Seb

1

क्या आपने ग्रिड पर ऊंचाई संपत्ति निर्धारित की है? यदि कोई ऊंचाई सेट नहीं है तो IE स्क्रॉलबार के साथ गड़बड़ हो सकता है।

+0

धन्यवाद, लेकिन मुझे अभी भी आईई पर काम करने के लिए स्क्रॉलबार नहीं मिल रहा है ... –

0

आप jQgrid 3.6 बीटा का प्रयास किया, ऐसा लगता है जैसे एक बहुत नई सुविधाएं हैं।

नई सुविधाओं का डेमो: वहाँ है http://www.trirand.com/jqgrid/jqgrid36/jqgrid.html

alsow नई विधि कहा: gridResize जो ग्रिड आकार बदल सकते हैं। http://github.com/tonytomov/jqGrid/commit/a008ebf7b8ad684b21e51f21eed4301b82bc66f2

1

jqGrid के लिए scrollOffset विकल्प है।

इसे शून्य पर सेट करें और खाली स्थान दूर हो जाता है।

+0

सही, समस्या यह है कि स्क्रॉल बार आवश्यक है यदि प्रदर्शित होने से अधिक पंक्तियां हों - लेकिन ग्रिड इसे तब तक नहीं जान सकता डेटा पुनर्प्राप्त करने के बाद। लेकिन ग्रिड का निर्माण होने के बाद 'स्क्रॉल ऑफसेट' विकल्प बदला नहीं जा सकता है, इसके अनुसार: http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options –

+0

यह अब काम नहीं करता है। डाउनवॉटिंग नहीं, बस साझा करना। – catbadger