如何设置焦点?

时间:2011-05-11 22:35:13

标签: extjs

我在每个网格中有2个网格和一个选定的行。在第二个网格中编辑单元格后,我想将焦点设置为第一个网格。

  grid2.on('afteredit') {
      grid1.focus()
 })

不起作用。怎么做?

2 个答案:

答案 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,行和列索引。