0
我有一個小部件,我通過下面的渲染函數呈現在GWT單元格中,該單元格擴展了AbstractCell。該列的創建如下,定義了getValue和FieldUpdater(update)函數。目的是將選定的行設置爲與點擊的小部件相對應。但是,當我單擊該小部件時,單元格的onBrowserEvent函數不會被調用。我認爲這是因爲這個小部件中包含一個FlexTable。GWT:將包含在單元格中的小部件的點擊事件傳遞到列
我通過設置功能AbstractCellTable.onBrowserEvent2斷點驗證了這一點,並注意到該函數不因爲別的 如果(部分== getTableBodyElement())
回報虛火細胞事件。這是錯誤的,因爲該部分是與通過小部件插入的表相對應的表體元素的子部分。
有沒有辦法將內部表格(小部件)中的點擊傳遞給外部單元格表格?
//Render function to add widget to cell
public void render(Context context, MyItem value, SafeHtmlBuilder sb) {
if (value != null) {
SafeHtml safeValue = SafeHtmlUtils.fromTrustedString(value
.getWidget().getElement().getString());
sb.append(safeValue);
}
}
//Creating the corresponding column, setting up the field update,
// and adding the column to cell table
// Create Cell
MyItemCell myItemCell = new MyItemCell();
// Create Column
Column<MyItem, MyItem> myItemColumn = new Column<MyItem, MyItem>(myItemCell) {
@Override
public MyItem getValue(MyItem object) {
return object;
}
};
// add field updater
myItemColumn.setFieldUpdater(new FieldUpdater<MyItem, MyItem>() {
@Override
public void update(int index, MyItem object, MyItem value) {
// This function, for some reason,
// is not getting called when I click
// on the widget corresponding to MyItem
MyDataTable.this.getSelectionModel().setSelected(object, true);
}
});
// Add column to table
this.getDataTable().addColumn(myItemColumn);
+1。這應該工作。 –
謝謝。在我的調試器中,當我單擊在單元格中呈現的窗口部件時,我看不到爲MyItemCell調用onBrowserEvent函數。當我點擊窗口部件(但在單元格中)時,我確實在onBrowserEvent函數中找到了斷點。有小費嗎? – AshD
請注意,我在MyItemCell的構造函數中使用以下參數調用AbstractCell父構造函數:super(click,「keydown」,「change」) – AshD