2010-10-22 11 views
6

मैं नए जीडब्ल्यूटी सेलटेबल विजेट का उपयोग करने की कोशिश कर रहा हूं लेकिन मेरी तालिका को एक पंक्ति विस्तार का समर्थन करने की आवश्यकता है, यानी एक पंक्ति के बाईं ओर एक ज़िप्पी है और जब इसे क्लिक किया जाता है, तो पंक्ति को और विस्तार से जानकारी प्रदान करने के लिए विस्तार करना चाहिए और यह पंक्ति सभी कॉलम भर में फैलाना चाहिए। क्या सेलटेबल के साथ इसे हासिल करना संभव है? मैं एक पंक्ति कैसे जोड़ूं जो गतिशील रूप से अन्य पंक्तियों के बीच सभी स्तंभों को फैलाता है?सेलटेबल के साथ एकल पंक्ति विस्तार कैसे करें?

किसी भी मदद की सराहना की जाएगी!

उत्तर

2

जीडब्ल्यूटी 2.5 इस तरह की चीजों को अनुमति देने के सही लक्ष्य के साथ CellTableBuilder जोड़ देगा।

अब इसे बनाने के लिए सीएसएस वर्गों के मैनुअल शैलियों में गड़बड़ी का उपयोग करने के लिए + है के लिए आप http://showcase2.jlabanca-testing.appspot.com/#!CwCustomDataGrid पर एक जीवित उदाहरण मिल सकते हैं (कोशिकाओं "शो दोस्त 'पर क्लिक करें)

+0

जानना अच्छा है, धन्यवाद! मैं अभी भी 2.4 के समाधान पर काम कर रहा हूं (सीएसएस जादू + विस्तार से तालिका ऊंचाई को मैन्युअल रूप से अपडेट कर रहा हूं)। – alexandroid

0

क्या आप अतिरिक्त पंक्ति को getRowElement(int row) का उपयोग करके अदृश्य नहीं बना सकते हैं और प्रदर्शित होने पर 'कोई नहीं' सेट करने के लिए डीओएम विधियों का उपयोग कर सकते हैं और बटन को दिखाने के लिए खाली होने पर, हिट हो जाता है।

+0

धन्यवाद! हालांकि, मुझे वास्तव में यकीन नहीं है कि पंक्तियों के बीच सभी कॉलम फैलाने वाली पंक्ति को कैसे जोड़ना है। – smallbec

0

मैं समाधान पर भी काम कर रहा हूँ और मेरी योजना देखो मुझे चाहिए। यकीन नहीं है कि मैं इसे जीडब्ल्यूटी के साथ मजाक कर सकता हूं हालांकि: http://jsfiddle.net/7WFcF/

+0

@ थॉमसब्रायर (मैं किसी कारण से सीधे अपने उत्तर पर टिप्पणी नहीं कर सकता) - जीडब्ल्यूटी 2.5 से उदाहरण अभी भी कॉलम का उपयोग करता है और यह स्पष्ट नहीं है कि क्या यह एक सेल बनाने की अनुमति देगा जो सभी कॉलमों में फैलता है ... – alexandroid

0

मैंने इसी समस्या को हल करने के लिए एक अलग दृष्टिकोण लिया।

मूल अवधारणा किसी ईवेंट के आधार पर पंक्तियों को जोड़ने और निकालने के लिए डोम तत्वों का उपयोग कर रही है। निम्नलिखित कोड सेलटेबल का एक सार विस्तार है। आप इस विधि को अपने ईवेंट से कॉल करना चाहते हैं जो एक पंक्ति का विस्तार करने के लिए क्लिक से निकाल दिया जाता है।

import com.google.gwt.dom.client.Document; 
import com.google.gwt.dom.client.Element; 
import com.google.gwt.dom.client.NodeList; 

public abstract class ActionCellTable<T> extends CellTable<T> { 
    protected abstract void addActionsColumn(); 

Integer previousSelectedRow = null; 

public void displayRowDetail(int selectedRow, Element e){ 
    //Get the tbody of the Cell Table 
    //Assumption that we want the first (only?) tbody. 
    Element tbody = this.getElement().getElementsByTagName("tbody").getItem(0); 
    //Get all the trs in the body 
    NodeList<Element> trs = tbody.getElementsByTagName("tr"); 

    //remove previously selected view, if there was one 
    if(previousSelectedRow!=null){ 
     trs.getItem(previousSelectedRow+1).removeFromParent(); 
     //If the current is further down the list then the current your index will be one off. 
     if(selectedRow>previousSelectedRow)selectedRow--; 
    } 
    if(previousSelectedRow==null || selectedRow != previousSelectedRow){// if the are equal we don't want to do anything else 
     Element td = Document.get().createTDElement(); 
     td.setAttribute("colspan", Integer.toString(trs.getItem(selectedRow).getChildNodes().getLength())); 
     td.appendChild(e); 

     Element tr = Document.get().createTRElement(); 
     tr.appendChild(td); 
     tbody.insertAfter(tr, trs.getItem(selectedRow)); 
     previousSelectedRow=selectedRow; 
    } else { 
     previousSelectedRow=null; 
    } 
} 

}

previousSelectedRow ट्रैक करने के लिए जो आइटम "विस्तार" है, यह शायद वर्ग या आईडी का उपयोग प्राप्त किया जा सकता प्रयोग किया जाता है। यदि आवश्यक हो तो मैं सेलटेबल, घटनाओं, विचारों और गतिविधियों पर और विस्तार कर सकता हूं।

+0

मैं पहली बार होगा यह स्वीकार करने के लिए कि यह एक हैकी समाधान हो सकता है, लेकिन आपके पास सेलटेबल्स के साथ नियंत्रण के स्तर (पढ़ने की कमी) के साथ, यह सबसे अच्छा था जिसके साथ मैं आया था। 2.5 समाधान बहुत अच्छा लग रहा है, लेकिन जब तक इसे जारी नहीं किया जाता है तब तक यह मेरे लिए थोड़ी मदद नहीं करता है। बिल्डर अवधारणा जो वे पेश करते हैं, वे इन तरह के अनुकूलन को बहुत कम हैकी बना देंगे। – drye

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