Использование событий GWT-кликов

Из-за соображений производительности у меня есть изготовленный на заказ стол. Таблица состоит из столбцов, которые создаются как HTML DIVs, а строка заключена в AbsolutePanel. Положение столбца (столбцов) и строки (строк) является абсолютным и рассчитывается в цикле рендеринга. Таблица добавляется в ScrollPanel и отображает только видимую часть строк, а также добавляет строки при прокрутке пользователя.

Требование клиента - открыть PopupPanel, чтобы показать подробности о строке при щелчке по строке. Я добавил ClickHandler на панель строк, поместив в нее событие click, что прекрасно работает.

Проблема в том, что, если я добавлю, например, стандартную ссылку или какой-либо кликабельный элемент в одну из ячеек таблицы, щелчок по указанному элементу (ам) приведет также к срабатыванию обработчика щелчка строки, который я хочу как-то предотвратить. Источником события является строка Элемент, а не ссылка / значок / все, что было нажато.

Любая помощь в решении этого (возможно, совершенно другой подход?) Высоко ценится.

1 ответ

Я бы использовал gwtquery из-за его простоты и производительности.

Я не знаю окончательный dom, отрендеренный вашим приложением, но если мы предположим, что у вас есть что-то вроде этого

<div id="column1">
  <div id="row1_1" class="my_row" product_id="whatever"> content </div>
   ...
</div>

Ваш код может быть примерно таким:

import static com.google.gwt.query.client.GQuery.*;

$(".my_row").click(new Function(){
  public void f() {
    // The gquery instance of the row clicked
    GQuery thisRow = $(this);

    // Use gquery methods to get some info of your row
    String thisId = thisRow.id();
    String productId = thisRow.attr("product_id");
    Element thisElement = thisRow.get(0);

    // do Something with your row 
    ...

  }
});
Другие вопросы по тегам