ListGrid将焦点放在FilterEditor

时间:2016-05-09 11:56:01

标签: smartgwt

我有一个像这样定义的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()后,如何将键盘焦点放在第一个过滤器编辑器字段中?

提前谢谢。

2 个答案:

答案 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);
        }
    });