我有一个像这样定义的ListGrid:
ListGrid lgrid = new ListGrid();
ListGridField first = new ListGridField("first",first");
ListGridField second = new ListGridField("second ",second ");
lgrid.setFields(first, second);
lgrid.setShowFilterEditor(true);
¿在布局中调用 show()后,如何将键盘焦点放在第一个过滤器编辑器字段中?
提前谢谢。
答案 0 :(得分:1)
根据您的用例(提供更有针对性的答案会有用),您发布的解决方案可能不是您真正需要的,因为如果您在ListGrid上滚动,它可能会触发新的数据提取(如果要显示更多记录),并将光标移动到过滤器编辑器(如果您的用户正在编辑某些记录,那么移动到过滤行的光标不是她想要发生的! )。
在这种情况下,您可能只想在listGrid.show()语句之后调用grid.focusInFilterEditor("fieldToFocus")
,或者在用于获取数据等的某个按钮的ClickHandler中调用
无论如何,你也不需要定时器。这有效:
listGrid.addDataArrivedHandler(new DataArrivedHandler() {
@Override
public void onDataArrived(DataArrivedEvent event) {
grid.focusInFilterEditor("fieldToFocus");
}
});
答案 1 :(得分:0)
我得到了解决方案,其 focusInFilterEditor ,这是在数据到达网格后设置焦点的示例:
// Put the focus on the first listGrid field when is loaded
listGrid.addDataArrivedHandler(new DataArrivedHandler() {
@Override
public void onDataArrived(DataArrivedEvent event) {
Timer t = new Timer() {
public void run() {
if(listGrid.getFilterEditorCriteria() == null){
listGrid.focusInFilterEditor("fieldToFocus");
}
}
};
t.schedule(600);
}
});