2016-02-17 5 views
1

Я пытаюсь добавить функцию addValueChangeHandler в TextBox внутри flexTable. Но когда я добавляю этот код: int rowIndex = tableImages.getCellForEvent (event) .getRowIndex(); Я использую этот метод, чтобы узнать текущую строку в случае ClickEvent.Gwt getCellForEvent flexTable

метод неприемлем для ValueChangeEvent, , так как я могу узнать, что такое индекс строки для измененной ячейки? Спасибо.

ответ

0

Ну да, потому что ему нужна сама ячейка, а не значение TextBox или событие. Что вы можете сделать, это:

  1. Получить Источник события через event.getSource()
  2. Cast это Widget по крайней мере (хотя это с уверенностью предположить, что это TextBox) Widget sourceWidget = (Widget)event.getSource();
  3. Получить исходный виджета элемента родитель sourceWidget.getElement().getParent();

Таким образом, вы будете получать реальную <td> клеток вашего TextBox вложенный в. Затем вы можете getCellFormatter вашей таблицы и найти индекс ячейки в цикле, сравнивая элемент , который вы получили с ячейками вашей таблицы.

Пожалуйста, скажите мне, если это решить вашу проблему

+0

Здравствуйте Roman, первое спасибо за быстрый ответ, о части 3. я попробовать этот код: Cell клеток = (Cell) widget.getParent(); , чем ячейка com.google.gwt.user.client.ui.HTMLTable.Cell; и имеют ошибку: не могут нанести виджет на HTMLTable.Cell Я вижу, что HTMLTable - вид виджетов, но Cell - это всего лишь часть HTMLTable – Roman

+0

Можете ли вы записать его фактический класс, чтобы узнать, какой тип является родителем textBox? Кроме того, вы уверены, что класс Cell, который вы импортировали, является HTMLTable.Cell не какой-либо другой Cell? –

+0

my TextBox - com.google.gwt.user.client.ui.TextBox. и да, я импортировал это: com.google.gwt.user.client.ui.HTMLTable.Cell; – Roman