ExtJs - 在编辑时保持选中网格行

时间:2013-03-12 14:56:35

标签: extjs extjs4 extjs4.1

我通过收听文本字段的id来更改网格中change列的值:

oTextfieldName.on( 'change', function( oField, strValue ) {
   oStore.getAt( 0 ).setId( strValue );
}

但是,如果调用setId(),则会删除该行0的选择。我的应用依赖于选定的行来保持选中状态。

如何在保持编辑/更改该ID列的同时保持选定的行?


编辑:

使用store.sync()时,它会被选中。

但是,我的商店搞砸了:

Uncaught TypeError: Object function () { this.destroy = Ext.emptyFn; } has no method 'indexOf' ext-dev.js:1253

2 个答案:

答案 0 :(得分:2)

你能重新选择一行吗?

oTextfieldName.on( 'change', function( oField, strValue ) {
   oStore.getAt( 0 ).setId( strValue );
   yourGrid.getSelectionModel().select(0);
}

你也可以这样做来抑制选择事件的触发。

var suppressEvent = true;
yourGrid.getSelectionModel().select(rowIndex, null, suppressEvent);  

查看SelectionModel select method

的文档

这是一个你可以玩的简单fiddle。如果单击"测试"按钮它将选择索引1处的行。

答案 1 :(得分:1)

由于sync()导致了这个错误,我现在使用那种糟糕的方式:

oSelectionModel.deselect( nIndex, true );        
oSelectionModel.select( nIndex, true );

更改后,我取消选择(幸运地看不见),然后选择。至少它有效。