我有一个可编辑的网格(Ext.grid.plugin.RowEditing
)
网格是一种形式。表单显示在窗口中
当通过显示窗口显示表单时,我想关注第一个可编辑行的第一列。
这是窗口'show'事件所需的方法
onWinShow : function (window, options) {
var grid = this.down ('#myGrid');
// focus on first field
var rowEditStore = grid.getStore ();
var rowEditor = grid.getPlugin ('rowEditplugin');
rowEditor.cancelEdit ();
var r = rowEditStore.getAt (0);
rowEditor.startEdit (r, 1);
},
我检查了RowEditing
和RowEditor
的来源,它具有聚焦字段的逻辑。
我可以看到焦点出现片刻然后消失,之后没有任何形式的焦点。
请说明我哪里出错了。
由于
答案 0 :(得分:0)
Extjs中的窗口具有defaultFocus属性,允许您在打开窗口时设置应该具有焦点的组件。
如果该属性不能满足您的需求,我建议将您当前的焦点函数封装在Ext.Function.defer方法中,这样你就必须看到你需要多少毫秒(测试你最慢的目标浏览器或make延迟浏览器依赖),这将使你的焦点在窗口的默认焦点完成后发生:
onWinShow : function (window, options) {
Ext.Function.defer(function (window, options) {
var grid = this.down ('#myGrid');
// focus on first field
var rowEditStore = grid.getStore ();
var rowEditor = grid.getPlugin ('rowEditplugin');
rowEditor.cancelEdit ();
var r = rowEditStore.getAt (0);
rowEditor.startEdit (r, 1);
}, 500, this);
}