2010-12-15 30 views
5

我想添加一個選擇偵聽器到我的GXT(Ext GWT)網格,但我似乎無法讓它着火。我試過很多這樣的變化,沒有運氣:將選擇監聽器添加到GXT Grid?

myGrid.addListener(Events.Select, new SelectionListener<ComponentEvent>() { 

    @Override 
    public void componentSelected(ComponentEvent ce) { 
     System.out.println("selected"); 
    } 
}); 

回答

1

嘗試:

myGrid.addListener(Events.Select, new Listener<GridEvent<ModelData>>() { 
    @Override public void handleEvent(GridEvent<ModelData> be) { 
     System.out.println("selected"); 
    } 
}); 

如有必要,你的模型類型更換ModelData。

+0

不,那也不會觸發。 – thedude19 2010-12-15 19:02:33

+0

這可能是您的網格沒有捕獲選擇事件。當您使用Events.DoubleClick替換Events.Select並雙擊某行時,它是否工作? – 2010-12-15 20:43:42

11
 myGrid.getSelectionModel().addSelectionChangedListener(new SelectionChangedListener<ModelData>() { 

     @Override 
     public void selectionChanged(SelectionChangedEvent<ModelData> se) { 
      ... 

     } 
    }); 

試試這個代碼

+1

非常有用的答案。 _注意:_即使發生取消選擇,該處理程序也會被觸發('Grid.getSelectionModel()。addSelectionChangedHandler') – Serg 2014-05-05 21:29:14

1

似乎已經找到了一個解決方法是:

myGrid.addListener(Events.OnClick, new Listener<ComponentEvent>() { 

    @Override 
    public void handleEvent(ComponentEvent ce) { 
     // Handle the grid event 
    } 
}); 

好像你只是要仿製它,那麼你可以檢查並投出您ComponentEvent到一個GridEvent。

2

升級這個答案GXT V3

grid.getSelectionModel().addSelectionChangedHandler(
    new SelectionChangedHandler<ModelData>(){ 

@Override 
public void onSelectionChanged(SelectionChangedEvent<ModelData> event) { 
    } 
}); 
0

你使用GXT 2.x版?你是否檢查是否需要的事件是沉沒的?例如像 grid.sinkEvents(Event.ONCLICK | Event.ONDBLCLICK | Event.MOUSEEVENTS);