0

我真的需要在 DataGrid 的整个排序完成后运行一些代码。特别是在显示列是升序还是降序排序的小箭头之后,因为我需要在显示该箭头后操作它的 CSS。我找不到真正设置箭头的地方。我试过这样的事情:

ListHandler<String> columnSortHandler = new ListHandler<String>(list) {
    @Override
    public void onColumnSort( ColumnSortEvent event ) {
        super.onColumnSort( event );
        // My Code here
    }
};

但代码也在排序完成之前运行。

感谢您提供如何解决此问题的任何建议。我现在正在寻找很长时间,但找不到任何有帮助的东西。

编辑:我已经覆盖了原始文件DataGrid.Resources以提供自定义箭头图片。我还有一个复杂的自定义标头,AbstractCell<String>它支持运行时操作并使用 DIV 和图像呈现。

4

2 回答 2

0

您可以使用CellTable.Resources.

public interface TableResources extends CellTable.Resources {
@Source("up.png")
ImageResource cellTableSortAscending();

@Source("down.png")
ImageResource cellTableSortDescending();

@Source("MyCellTable.css")
CellTable.Style cellTableStyle();

}

MyCellTable.css使用样式名称并更改您的图标

于 2013-01-10T12:54:14.760 回答
0

当您使用 aListHandler时,可能ListDataProvider会更新CellTable live ( setRowData); 因为两者ListDataProviderCellTable通过内部HasDataPresenter)都使用Scheduler#scheduleFinally(),那么使用Scheduler#scheduleDeferred()应该足以保证你在它们之后运行,但是你会冒一些闪烁的风险。

您可以在您的自定义ListHandler flush()ListDataProvider,绕过一个scheduleFinally,然后在scheduleFinally其中一个之后执行CellTable(因为flush()将调用which 将安排命令;您的命令将安排在之后,因此将在之后运行)。setRowDataCellTable

于 2013-01-10T13:12:46.220 回答