GWT单元格表列排序处理程序

时间:2013-09-11 15:10:20

标签: gwt

我使用GWT Cell Table并在列上启用排序。我还提供了过滤列的选项。这大致就是标题的外观。

---- ColumnName(Image)-------

当用户点击图像时,我开始过滤过程。我使用Cell Table的addCellPreviewHandler实现了这一点。我面临的问题是,当单击图像时,列也会自行排序。谁能告诉我如何防止这种情况发生?为了更清楚,我希望在用户点击标题中的任何位置而不是图像时调用排序。

感谢。

  breakDownCellTable.addColumn(indexedColumn, columnHeader);
        final int currentColumnIndex = columnIndex;

        // Add a ColumnSortEvent.ListHandler to connect sorting to the
        // java.util.List.
        ListHandler<List<GwtContributorCellData>> columnSortHandler = new ListHandler<List<GwtContributorCellData>>(contributorList);
        columnSortHandler.setComparator(indexedColumn, new Comparator<List<CustomClass>>() {
            public int compare(List<CustomClass> o1, List<CustomClass> o2) {
                if (o1 == o2) {
                    return 0;
                }

                // Compare the columns.
                if (o1 != null) {
                    return (o2 != null) ? o1.get(currentColumnIndex).compareTo(o2.get(currentColumnIndex)) : 1;
                }
                return -1;
            }

        });

        breakDownCellTable.addColumnSortHandler(columnSortHandler);

并在onBrowserEvent方法中:

if("click".equals(event.getType())){
            EventTarget eventTarget = event.getEventTarget();
            if(eventTarget.toString().contains("img") && !eventTarget.toString().contains("<th")){
                //event.stopPropagation();
              //  Window.alert("here");
                //breakDownCellTable.fireEvent()
                ColumnSortEvent.fire(breakDownCellTable, breakDownCellTable.getColumnSortList());

1 个答案:

答案 0 :(得分:0)

您可以实现正在使用的单元格的子类,并覆盖onBrowserEvent()方法。

This post解释了如何找出哪个DOM元素是事件的确切来源。

一旦您知道图像已被点击,就相应地触发过滤/排序事件。