那里,
我有一个非常基本的例子,一个网格只有一个项目和一个按钮,用基础记录的set方法更新这个条目。
问题是,如果在按下按钮更新记录时选择了项目,则选择将被删除,之后就不能再选择它了。
工作示例:http://jsfiddle.net/fu2Xq/2/
Ext.onReady(function() { var personsGrid = Ext.create('Ext.grid.Panel', { width: 150, height: 100, renderTo: Ext.getBody(), store: Ext.create('Ext.data.Store', { fields: [ 'name' ], data: [{ name: 'Stephen' }] }), columns: [{ text: 'Name', dataIndex: 'name', flex: 1 }], }); var txtField = Ext.create('Ext.form.field.Text', { fieldLabel: 'New name', labelWidth: 70, width: 150, value: 'Alex', renderTo: Ext.getBody() }); Ext.create('Ext.button.Button', { text: 'Rename person', width: 150, renderTo: Ext.getBody(), handler: function() { var rec = personsGrid.getStore().getAt(0); rec.set('name', txtField.getValue()); } }); });
对我来说似乎是一个错误,因为在重新排序名称列后,选择会重新出现......
我真的很感激对此发表评论!
由于
编辑:重新格式化了一些代码...
答案 0 :(得分:1)
这是ExtJS 4.1.1中的一个错误,它似乎在4.1.3中得到解决,可以在更新记录后通过调用网格视图的refresh-method来解决:
handler: function() { var rec = personsGrid.getStore().getAt(0); rec.set('name', txtField.getValue()); personsGrid.getView().refresh(); }
我从Sencha论坛得到了这个答案: http://www.sencha.com/forum/showthread.php?253287-Item-in-grid-is-deselected-after-record-has-been-modified-with-set-method&p=928197&viewfull=1#post928197
答案 1 :(得分:0)
在列标题的headerclick
事件中,网格视图中的旧选择已被记住,在渲染排序视图后,这些记录将再次被选中。
如果是rec.set()
,datachanged
的“更新”事件将被解雇,而不是Ext.data.store
。但是没有与“更新”事件中的headerclick
选择旧记录相关的实现。
因此,您必须在rec.set()
之后实施记录选择。
Here是关于类似问题的讨论。