2010-10-12 10 views
6

मेरे पास GXT में एक ग्रिड है, इस तरह कुछ:GXT ग्रिड को सभी उपलब्ध चौड़ाई को कैसे ले जाने दें?

List<ColumnConfig> configs = new ArrayList<ColumnConfig>(); 
ColumnConfig config = new ColumnConfig(); 
config.setId("type"); 
config.setHeader("Type"); 
config.setWidth(50); 
configs.add(config); 
config = new ColumnConfig(); 
config.setId("text"); 
config.setHeader("Info"); 
config.setWidth(75); 
configs.add(config); 

columnModel = new ColumnModel(configs); 
listStore = new ListStore<DtoModel>(); 

grid = new Grid<DtoModel>(listStore, columnModel); 
grid.setAutoHeight(true); 
grid.setAutoWidth(true); 

VerticalPanel verticalPanel = new VerticalPanel(); 
verticalPanel.setLayout(new FillLayout()); 
verticalPanel.add(grid); 

यह ग्रिड को एक अपवाद के साथ ठीक बनाता है - चौड़ाई कॉलम चौड़ाई के योग तक ही सीमित है। जब मैं कॉलम चौड़ाई से गुजरता हूं, तो ग्रिड 0 चौड़ाई तक समाप्त होता है।

क्या इस ग्रिड को रखने का कोई तरीका है और इसके कॉलम पूरे क्षेत्र को भरने के लिए विस्तारित हैं?

संपादित करें: कठिनाइयों में से एक ColumnConfig.setWidth() विधि केवल int पैरामीटर के रूप में लेता है, इसलिए मैं स्ट्रिंग या कुछ ऐसा "100%" निर्दिष्ट नहीं कर सकता।

उत्तर

7

इस तरह यह करने के लिए है के साथ setAutoFill() जब आप एक स्तंभ का आकार बदलने, GXT हमेशा होगा अन्य सभी कॉलम का आकार बदलें ताकि ग्रिड कंटेनर में फिट हो। ऑटोफिल के बिना, यदि आप केवल एक कॉलम का आकार बदलते हैं, तो आप ऑटोएक्सपैंड कॉलम का उपयोग करते हैं, तो ग्रिड युक्त घटक की तुलना में बड़ा (या छोटा) बढ़ सकता है और ऐसे मामले में आपको फिट करने के लिए ग्रिड का मैन्युअल रूप से आकार बदलना होगा - जो केवल एक नहीं है दर्द, ज्यादातर मामलों में अंतिम उपयोगकर्ता के लिए लगभग असंभव है।

+0

यह वह समाधान था जिसे मैं अंततः ढूंढ रहा था। बहुत बहुत धन्यवाद! – Cuga

0

आप सीएसएस (सेट स्टाइल/सेट कॉलम स्टाइलनाम) के साथ ग्रिड/कॉलम स्टाइल करने का प्रयास कर सकते हैं और फिर आप 100% चौड़ाई के रूप में उपयोग कर सकते हैं।

cupakob

+0

मैंने आपके सुझाव की कोशिश की, लेकिन इससे कोई फर्क नहीं पड़ता। यह अभी भी कुछ भी नहीं दिखाता है जब तक कि पूर्णांक चौड़ाई/ऊंचाई मान प्रदान नहीं किए जाते हैं, भले ही मैं सेट स्टाइल ("चौड़ाई: 100%") निर्दिष्ट करता हूं, और यदि मैं दोनों निर्दिष्ट करता हूं, तो यह अभी भी केवल पूर्णांक चौड़ाई निर्दिष्ट करता है। – Cuga

+0

सेट स्टाइल ("चौड़ाई: 100%") काम नहीं करेगा, यहां आपको स्टाइलशीट से स्टाइल नाम निर्दिष्ट करना होगा ... उदाहरण के लिए: setStyle ("myGridWidth") और "myGridWidth" को आपके * .css में निम्नानुसार परिभाषित किया गया है: .myGridWidth {width: 100%} – cupakob

3

GXT ग्रिड एक विधि नामित setAutoExpandColumn() उस स्तंभ है कि आप अपने ग्रिड में सभी उपलब्ध स्थान ले करना चाहते हैं उसका आईडी ले जाएगा है। मैं ग्रिड से setAutoHeight और setAutoWidth को हटा दूंगा।

मुझे यकीन नहीं है कि आप एक निश्चित चौड़ाई लेआउट या लचीला लेआउट प्राप्त करने का प्रयास कर रहे हैं जो ब्राउज़र की ऊंचाई/चौड़ाई के आधार पर विस्तारित होगा। यहां मैं आमतौर पर ऐसा करता हूं क्योंकि मैं चाहता हूं कि मेरी ग्रिड ऊंचाई और चौड़ाई को ऊपर ले जाएं और पृष्ठ पर स्क्रॉल करें। उम्मीद है की यह मदद करेगा।

grid.getView().setAutoFill(true); 

यहाँ एक मुख्य बिंदु याद करने के लिए है:

--Vinny

Viewport viewport = new Viewport(); 
    viewport.setLayout(new BorderLayout()); 

    ContentPanel center = new ContentPanel(); 
    center.setFrame(false); 
    center.setLayout(new FitLayout()); 
    center.add(grid); 
+0

इससे यह भी सुनिश्चित होगा कि खिड़की का आकार बदलते समय, या ग्रिड क्षेत्र को कम करने के दौरान आपके कॉलम "ग्रिड" को भरें (या आवश्यक होने पर संकीर्ण करें), उदाहरण के लिए जब यह व्यूपोर्ट का हिस्सा होता है। धन्यवाद :-) +1 –

-1

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

grid.setAutoHeight(false); 
grid.setAutoWidth(false); 
5

ग्रिड व्यू में एक फ़ंक्शन है जो सभी स्तंभों को उपलब्ध स्थान पर फिट करने के लिए मजबूर करता है। यह प्रत्येक कॉलम में 1 का फ्लेक्स सेट करने जैसा है।

grid.getView().setForceFit(true); 
संबंधित मुद्दे