2011-11-04 28 views
6

Tôi có GWG 2.4 DataGrid được liên kết với một SingleSelectionModel. Một trong các cột trong lưới là một CheckboxCell, nhưng nó không được sử dụng để lựa chọn, nhưng để thiết lập một giá trị trường boolean cho loại mục cơ bản của hàng. Vấn đề của tôi là khi tôi nhấp vào hộp kiểm, hàng được chọn đầu tiên, sau đó tôi phải bấm vào một lần thứ hai để thiết lập/bỏ đặt hộp kiểm. Tôi muốn nhấp vào bên ngoài của hộp kiểm sẽ chọn hàng, trong khi nhấp vào bên trong của hộp kiểm chỉ đặt/bỏ chọn hộp kiểm. Bất cứ ai có thể chỉ cho tôi đi đúng hướng về cách làm điều này. Tôi tiếp tục quay lại onBrowserEvent, nhưng tôi không chắc chắn nên thử gì.Ô của hộp kiểm và các hàng trong bảng ô có thể chọn

Trả lời

6

Có một số cách tiếp cận bạn có thể thực hiện, tùy thuộc vào chính xác bạn muốn làm gì. Dưới đây là hai ý tưởng mà tôi suy nghĩ:

  • Sử dụng một DefaultSelectionEventManager.CheckboxEventTranslator vào danh sách đen cột
  • Intercept nó trên một tế bào bằng cơ sở tế bào với CellPreviewEvent.Handler và xử lý nó vào mức độ DOM bằng cách kiểm tra EventTarget ("click".equals(event.getType())) và sau đó sử dụng event.stopPropogation() khi tổ chức EventTarget thuộc loại đầu vào "hộp kiểm"
+0

Tôi sẽ thử điều này vào thứ Hai khi tôi trở lại làm việc. Cảm ơn. –

+1

Đọc tài liệu, có vẻ như SelectionEventManager có tất cả các công cụ tôi cần để xử lý vấn đề này và các vấn đề khác mà tôi đang gặp phải. Chúc mừng! –

0

Mã này được giải quyết trong trường hợp của tôi rất giống với vấn đề của bạn.

Column<SomeBean, Boolean> checkboxColumn= new Column<SomeBean, Boolean>(new CheckboxCell(true,false)) 
{ 
    @Override 
    public Boolean getValue(SomeBean object) 
    { 
     if(object == null || object.getId() == null) 
      return null; 
     return selectionModel.isSelected(object); 
    } 
}; 
Các vấn đề liên quan