我真的需要在完成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和Image进行渲染。
答案 0 :(得分:0)
您可以使用CellTable.Resources
操作css资源。
public interface TableResources extends CellTable.Resources {
@Source("up.png")
ImageResource cellTableSortAscending();
@Source("down.png")
ImageResource cellTableSortDescending();
@Source("MyCellTable.css")
CellTable.Style cellTableStyle();
}
在MyCellTable.css
中使用样式名并更改图标
答案 1 :(得分:0)
当您使用ListHandler
时,可能会ListDataProvider
更新CellTable
直播(setRowData
);因为ListDataProvider
和CellTable
(通过内部HasDataPresenter
)使用Scheduler#scheduleFinally()
,然后使用Scheduler#scheduleDeferred()
应该足以保证你追赶他们,但是你会冒一些闪烁的风险。
您可以在自定义ListHandler
flush()
ListDataProvider
中绕过一个scheduleFinally
,然后使用scheduleFinally
执行其中一个CellTable
flush()
(因为setRowData
将在CellTable
上调用{{1}}来调度命令;您的命令将在之后安排,因此将在之后运行。