2013-06-03 1 views
0

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

Требование клиента состоит в том, чтобы открыть PopupPanel, чтобы отображать информацию о строке при щелчке по строке. Я добавил ClickHandler на панель строк, погрузив в него событие click, что прекрасно работает.

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

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

ответ

0

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

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

<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 
    ... 

    } 
});