ListGrid 将焦点放在 FilterEditor 中
ListGrid put focus in the FilterEditor
我有一个这样定义的 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() 后,如何将键盘焦点放在第一个过滤器编辑器字段中?
提前致谢。
我得到了解决方案,它的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);
}
});
根据您的用例(这有助于提供更有针对性的答案),您发布的解决方案可能不是您真正需要的,因为如果您在 ListGrid 上滚动,它可能会触发一个新的数据获取(如果有更多记录要显示),并因此将光标移动到过滤器编辑器(如果您的用户此时正在编辑一些记录,光标移动到过滤器行不是她想要发生的!!).
在这种情况下,您可能只想在 listGrid.show() 语句之后或在用于获取数据的某些按钮的 ClickHandler 中调用 grid.focusInFilterEditor("fieldToFocus")
,等等。
总之,你也不需要定时器。这有效:
listGrid.addDataArrivedHandler(new DataArrivedHandler() {
@Override
public void onDataArrived(DataArrivedEvent event) {
grid.focusInFilterEditor("fieldToFocus");
}
});
我有一个这样定义的 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() 后,如何将键盘焦点放在第一个过滤器编辑器字段中?
提前致谢。
我得到了解决方案,它的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);
}
});
根据您的用例(这有助于提供更有针对性的答案),您发布的解决方案可能不是您真正需要的,因为如果您在 ListGrid 上滚动,它可能会触发一个新的数据获取(如果有更多记录要显示),并因此将光标移动到过滤器编辑器(如果您的用户此时正在编辑一些记录,光标移动到过滤器行不是她想要发生的!!).
在这种情况下,您可能只想在 listGrid.show() 语句之后或在用于获取数据的某些按钮的 ClickHandler 中调用 grid.focusInFilterEditor("fieldToFocus")
,等等。
总之,你也不需要定时器。这有效:
listGrid.addDataArrivedHandler(new DataArrivedHandler() {
@Override
public void onDataArrived(DataArrivedEvent event) {
grid.focusInFilterEditor("fieldToFocus");
}
});