2011-10-26 15 views
9

Bir Hücre Listesi ayarlamak istiyorum, böylece bir satır tıklandığında seçimi değiştirir. Böylece, ctrl tuşunu tutma ihtiyacı dışında birden fazla satır seçilebilir.GWT CellList Seçimi değiştirmek için tıklayın (Çok Seçmeli)

Çalışmak için değiştirmek için neye ihtiyacım var?

class ToggleEventTranslator<T> implements DefaultSelectionEventManager.EventTranslator<T> { 
    @Override 
    public boolean clearCurrentSelection(final CellPreviewEvent<T> event) { 
     return false; 
    } 

    @Override 
    public SelectAction translateSelectionEvent(final CellPreviewEvent<T> event) { 
     return SelectAction.TOGGLE; 
    } 

} 


MultiSelectionModel<ObjProxy> multiSelectionModel = new MultiSelectionModel<ObjProxy>(); 

    ocjCellList.setSelectionModel(multiSelectionModel, DefaultSelectionEventManager 
      .<ObjProxy> createCustomManager(new ToggleEventTranslator<ObjProxy>())); 

cevap

8
list.addCellPreviewHandler(new Handler<T>() { 

     @Override 
     public void onCellPreview(final CellPreviewEvent<T> event) { 

      if (BrowserEvents.CLICK.equals(event.getNativeEvent().getType())) { 

       final T value = event.getValue(); 
       final Boolean state = !event.getDisplay().getSelectionModel().isSelected(value); 
       event.getDisplay().getSelectionModel().setSelected(value, state); 
       event.setCanceled(true); 
      } 
     } 
}); 


private final MultiSelectionModel<T> selectModel = new MultiSelectionModel<T>(); 

final Handler<T> selectionEventManager = DefaultSelectionEventManager.createCheckboxManager(); 
list.setSelectionModel(selectModel, selectionEventManager); 
+0

'selectModel' tanımı neye benziyor? – Carl

+0

Bu kodu bir CellList ile denedim ve birden çok öğenin seçilmesine izin vermiyor. Uygulamanın daha fazlası var mı? – Carl

+0

İyi seçim, bu seçim modelini kullanarak birden çok öğenin seçilmesini sağlamalıdır. private final MultiSelectionModel selectModel = yeni MultiSelectionModel (); –

3
Eğer bu onay kutusunu sütun eklemek ister

" ya da olmasın, add a cell preview handler gerekecek. Bir DefaultSelectionEventManager kullanmaktır tanımlamak için en kolay yolu, ya bir onay kutusu sütununun veya creating a custom one birlikte bir checkbox manager kullanarak (eğer '') bir toggle action bir tıklama olayı map d Sen GWT Showcase yılında, kullanılan onay kutusu varyantı görebilirsiniz

;. aynı anda CellPreviewEvent.Handler eklemenin iki bağımsız değişkenlerle setSelectionModel aşırı kullanır ".

(this answer Kredi) yazı için

+1

teşekkürler. Bir CellList'e nasıl uygulanır? CellTable ile tıklama ile geçiş yapma davranışı elde etmek basittir, ancak bir CellList ile çalışmayı başaramadım. –

İlgili konular