我正在使用 ExtJS 4.2.1 并且有一个相当简单的设置:基于 JSON 的存储和从该存储读取的网格面板。添加按钮的点击事件调用下面的函数。
我的目标是在网格中添加一个空白行,并立即使用网格Ext.grid.plugin.CellEditing
面板上启用的插件开始对其进行编辑。
var addNewRow = function() {
// start add logic
var row = {
'name': '',
'email': '',
'description': ''
};
store.add(row);
// start auto-edit logic
var index = store.indexOf(row); // -1
var grid = Ext.ComponentQuery.query('gridpanel[itemId=upperPane]')[0];
var plugin = grid.getPlugin('upperPaneEditor');
plugin.startEdit( index, 0 );
};
在调试这个时,索引设置为 -1 并且不起作用。我用 (0, 0) 测试了 plugin.startEdit() 的功能来编辑第一行的第一列,它工作正常。我尝试将自动编辑逻辑移至各种事件处理程序以使其正常工作:
- 商店的
add
事件在添加后触发并反映了正确的索引,但该元素尚未出现在网格面板中,以便插件抓取它。 - 添加后网格面板的
afterrender
事件没有触发 - 网格面板的
add
事件仅在手动双击单元格以对其进行编辑后触发。它也最终与自己陷入了循环。
我不确定此时还可以尝试什么。