GWT Double Click with addCellPreviewHandler 仅在 table 的第一页有效
GWT Double Click with addCellPreviewHandler works only in first page of table
我在一个项目中使用 GWT 2.5,我必须在 table 中添加一个双击事件,我必须在其中同时获取行和列,因此,根据之前的问题,我创建了以下内容:
cellTable.addCellPreviewHandler(new CellPreviewEvent.Handler<BusStopsInfo>() {
long lastClick=-1000;
@Override
public void onCellPreview(CellPreviewEvent<BusStopsInfo> event) {
long clictAt = System.currentTimeMillis();
if(event.getNativeEvent().getType().contains("click")){
if(clictAt-lastClick < 500) { // dblclick on 2 clicks detected within 500 ms
if (BrowserEvents.CLICK.equalsIgnoreCase(event.getNativeEvent().getType())) {
int columnHit = event.getColumn();
if (selectedItems != null){
selectedItems.clear();
selectionModel.clear();
}
selectedItems = new ArrayList<BusStopsInfo>();
Set<HasData<BusStopsInfo>> bsinfos = dataProvider.getDataDisplays();
Iterator<HasData<BusStopsInfo>> iter = bsinfos.iterator();
HasData<BusStopsInfo> bsinfo = iter.next();
Iterable<BusStopsInfo> iterbs = bsinfo.getVisibleItems();
int counterbs = 0;
for (BusStopsInfo bs : iterbs){
if (counterbs == event.getIndex()){
selectedItems.add(bs);
break;
}
counterbs++;
}
if (columnHit == 8){
edit_associations.click();
} else{
edit.click();
}
}
}
lastClick = System.currentTimeMillis();
}
}
});
我也在我的 table 中使用分页 (SimplePager),所以,上面的代码在 table 的第一页中工作正常,但在其他页面中不起作用比第一。有人有什么建议吗?
我发现了错误。以防万一它会帮助其他人错误在这里:
if (counterbs == event.getIndex()){
selectedItems.add(bs);
break;
}
替换为:
if (counterbs == (event.getIndex() - (pagertop.getPage()*pagertop.getPageSize()))){
selectedItems.add(bs);
break;
}
因为dataProvider在每一页都是从0开始的。
我在一个项目中使用 GWT 2.5,我必须在 table 中添加一个双击事件,我必须在其中同时获取行和列,因此,根据之前的问题,我创建了以下内容:
cellTable.addCellPreviewHandler(new CellPreviewEvent.Handler<BusStopsInfo>() {
long lastClick=-1000;
@Override
public void onCellPreview(CellPreviewEvent<BusStopsInfo> event) {
long clictAt = System.currentTimeMillis();
if(event.getNativeEvent().getType().contains("click")){
if(clictAt-lastClick < 500) { // dblclick on 2 clicks detected within 500 ms
if (BrowserEvents.CLICK.equalsIgnoreCase(event.getNativeEvent().getType())) {
int columnHit = event.getColumn();
if (selectedItems != null){
selectedItems.clear();
selectionModel.clear();
}
selectedItems = new ArrayList<BusStopsInfo>();
Set<HasData<BusStopsInfo>> bsinfos = dataProvider.getDataDisplays();
Iterator<HasData<BusStopsInfo>> iter = bsinfos.iterator();
HasData<BusStopsInfo> bsinfo = iter.next();
Iterable<BusStopsInfo> iterbs = bsinfo.getVisibleItems();
int counterbs = 0;
for (BusStopsInfo bs : iterbs){
if (counterbs == event.getIndex()){
selectedItems.add(bs);
break;
}
counterbs++;
}
if (columnHit == 8){
edit_associations.click();
} else{
edit.click();
}
}
}
lastClick = System.currentTimeMillis();
}
}
});
我也在我的 table 中使用分页 (SimplePager),所以,上面的代码在 table 的第一页中工作正常,但在其他页面中不起作用比第一。有人有什么建议吗?
我发现了错误。以防万一它会帮助其他人错误在这里:
if (counterbs == event.getIndex()){
selectedItems.add(bs);
break;
}
替换为:
if (counterbs == (event.getIndex() - (pagertop.getPage()*pagertop.getPageSize()))){
selectedItems.add(bs);
break;
}
因为dataProvider在每一页都是从0开始的。