2013-06-03 9 views
0

성능상의 이유로 사용자 정의 테이블이 있습니다. 테이블은 HTML DIV로 작성된 열로 구성되며 행은 AbsolutePanel에 래핑됩니다. 열 (들)과 행 (들)의 위치는 절대적이며 렌더 루프에서 계산됩니다. 이 테이블은 ScrollPanel에 추가되어 행의 보이는 부분 만 렌더링하고 사용자가 스크롤하면 행을 추가합니다.GWT 클릭 이벤트 사용

고객 요구 사항은 행을 클릭 할 때 행에 대한 세부 정보를 표시하는 PopupPanel을 여는 것입니다. 클릭 이벤트를 침몰하여 행 패널에 ClickHandler를 추가했습니다.이 이벤트는 정상적으로 작동합니다.

문제는 내가 추가 할 경우입니다. 표준 링크 또는 임의의 클릭 가능한 항목을 표의 셀 중 하나에 넣고 해당 항목을 클릭하면 행 클릭 처리기가 실행됩니다. 이벤트 소스는 행 요소이며 링크/아이콘/클릭 한 것이 아닙니다.

이 문제를 해결하려면 (아마도 완전히 다른 접근 방식일까요?) 많은 도움을 주실 수 있습니다.

답변

0

간결 성과 성능으로 인해 gwtquery을 사용합니다.

나는 앱으로 renderized 최종 DOM을 모르지만, 우리가 생각하는 경우는 다음과 같이 있습니다

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

    } 
}); 
:

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

귀하의 코드는 다음과 같은 수를