2010-07-16 10 views
8

क्या CellTable में कॉलम के शीर्षकों पर क्लिक हैंडलर (या किसी भी प्रकार का हैंडलर) जोड़ने का कोई तरीका है? मैं अपने सेलटेबल में कुछ सॉर्टिंग कार्यक्षमता जोड़ना चाहता हूं और मुझे Column या Header कक्षाओं में कोई भी तरीका नहीं दिखता है जो इसकी अनुमति देगा। सेलटेबल का उपयोग करने के तरीके के बारे में जानने के लिए मैंने this पोस्ट का उपयोग किया था।जीडब्ल्यूटी 2.1 सेलटेबल कॉलम हैडर इवेंट्स पर क्लिक करें

उत्तर

3

सेलटेबल पर अभी तक समर्थन करने के बॉक्स तरीके से बाहर नहीं है। हालांकि एक मैनुअल वर्कअराउंड है जिसमें बहुत सारे कोड ड्रडगरी शामिल हैं। व्यय नमूना के तहत बाइक शेड में कक्षा SortableHeader और SortableColumn देखें। आपको com.google.gwt.sample.expenses.gwt.client.ExpenseDetails में उपयोग मिलेगा। आप इसे तब तक उपयोग कर सकते हैं जब तक कि अगले रिलीज में कुछ ठोस न हो जाए।

जांच निर्देशिका: http://google-web-toolkit.googlecode.com/svn/trunk/bikeshed

+2

लगता है जैसे लिंक अब मान्य नहीं है। इसे आजमाएं http://code.google.com/p/google-web-toolkit/source/browse/branches/2.1/bikeshed/src/com/google/gwt/sample/expenses/gwt/client/ – stuff22

+0

@ stuff22 संपादित उत्तर –

0
GWT 2.1 के अंतिम रिलीज के साथ

, वहाँ किया गया है sortable स्तंभों के लिए किसी भी समर्थन CellTable को जोड़ा गया? या बाइकहेड उदाहरण को देखने के बाद भी यह अभी भी अपना खुद का समाधान है? क्लिक घटनाओं के लिए

8

वर्कअराउंड:

Header<String> columnHeader = new Header<String>(new ClickableTextCell()) { 
    @Override 
    public String getValue() { 
     return columnName; 
    } 
}; 

columnHeader.setUpdater(new ValueUpdater<String>() { 
    @Override 
    public void update(String value) { 
     Window.alert("Header clicked!"); 
    } 
}); 

table.addColumn(column, columnHeader); 
0
CellTable<Contact> table = new CellTable<Contact>(); 

    // Create name column. 
    final TextColumn<Contact> nameColumn = new TextColumn<Contact>() { 
     @Override 
     public String getValue(Contact contact) { 
     return contact.name; 
     } 
    }; 
    // Create a data provider. 
    ListDataProvider<Contact> dataProvider = new ListDataProvider<Contact>(); 

    // Connect the table to the data provider. 
    dataProvider.addDataDisplay(table); 
    final List<Contact> list = dataProvider.getList(); 
    for (Contact contact : CONTACTS) { 
     list.add(contact); 
    } 
    final ListHandler<Contact> columnSortHandler = new ListHandler<Contact>(
      list); 
    Header<String> columnHeader = new Header<String>(new ClickableTextCell()) { 
     @Override 
     public String getValue() { 
      return "Name"; 
     } 
    }; 

    columnHeader.setUpdater(new ValueUpdater<String>() { 
     @Override 
     public void update(String value) { 
      if (Window.confirm("Want to do?")){ 
       nameColumn.setSortable(true); 
       columnSortHandler.setComparator(nameColumn, 
         new Comparator<Contact>() { 
          public int compare(Contact o1, Contact o2) { 
          if (o1 == o2) { 
           return 0; 
          } 

          // Compare the name columns. 
          if (o1 != null) { 
           return (o2 != null) ? o1.name.compareTo(o2.name) : 1; 
          } 
          return -1; 
          } 
         }); 
      } else nameColumn.setSortable(false); 
     } 
    }); 
    // Make the name column sortable. 
    nameColumn.setSortable(false); 

    // Create address column. 
    TextColumn<Contact> addressColumn = new TextColumn<Contact>() { 
     @Override 
     public String getValue(Contact contact) { 
     return contact.address; 
     } 
    }; 

    // Add the columns. 
    table.addColumn(nameColumn, columnHeader); 
    table.addColumn(addressColumn, "Address"); 




    // Add the data to the data provider, which automatically pushes it to the 
    // widget. 


    // Add a ColumnSortEvent.ListHandler to connect sorting to the 
    // java.util.List. 
    //------------------ Code to add --------------------------------// 
    VerticalPanel vp = new VerticalPanel(); 




    table.addColumnSortHandler(columnSortHandler); 
    //------------------ Code end --------------------------------// 
    // We know that the data is sorted alphabetically by default. 
    table.getColumnSortList().push(nameColumn); 

    // Add it to the root panel. 
    vp.add(table); 
    RootPanel.get().add(vp); 
संबंधित मुद्दे