我在每个网格中有2个网格和一个选定的行。在第二个网格中编辑单元格后,我想将焦点设置为第一个网格。
grid2.on('afteredit') { grid1.focus() })
不起作用。怎么做?
答案 0 :(得分:2)
RowSelectionModel有一个名为selectRow()的方法,它将突出显示附加到记录的指定行。假设你的意思是焦点?
那就是说,你的代码看起来像这样。
`
grid2.on('afteredit', function(edit_event) {
var id = edit_event.record.get('id');
var grid1_record = grid1.store.getById(id);
grid1.getSelectionModel().selectRow(grid1_record);
}, this);
`
类似的东西。
答案 1 :(得分:1)
有几件事:
<强> 1。事件监听器语法
如果这可行,你可能会这样做:
grid2.on('afteredit', function(event) {
grid1.focus();
}, this);
<强> 2。使用焦点
虽然ExtJS API文档说.focus()是一个在网格组件上调用的有效方法,但值得注意的是该方法的描述实际上是这样说的:
尝试关注此组件。
虽然GridPanels等继承自Component类,但focus()通常用于基于表单的组件,它也从Component类继承。因此,仅仅因为你正在调用focus(),并不意味着它将按照你对每个组件的预期方式工作。
你想要关注的网格究竟是什么部分?如果你想要关注的网格中有可编辑的字段,你可以专注于它们而不是使用'afteredit'事件触发传递的对象中的一些属性,其中包含对网格,记录,字段,值的引用,默认情况下为originalValue,行和列索引。