1

嘿那里,

我有一个非常基本的示例,其中只有一个项目的网格和一个使用基础记录的设置方法更新此条目的按钮。

问题是,如果在通过按下按钮更新记录时选择了该项目,则选择将被删除,之后就无法再选择它。

工作示例: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());
        }
    });
});

对我来说似乎是一个错误,因为在重新排序名称列后,选择会重新出现......

我真的很感激对此发表评论!

谢谢


编辑:重新编写了一些代码...

4

2 回答 2

1

这是 ExtJS 4.1.1 中的一个错误,似乎在 4.1.3 中已解决,可以通过在更新记录后调用网格视图的刷新方法来解决:

http://jsfiddle.net/fu2Xq/7/

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 -方法&p=928197&viewfull=1#post928197

于 2013-01-11T07:55:49.927 回答
0

headerclick列标题事件中,网格视图中的旧选择已被记住,并且在呈现排序视图后,这些记录将再次被选中。

而在 rec.set(), 而不是 的情况下datachanged, 'update' 事件Ext.data.store被触发。headerclick但是没有与“更新”事件相同的选择旧记录相关的实现。

所以你必须在 after 上实现记录选择rec.set()

是关于类似问题的讨论。

于 2013-01-10T11:37:59.647 回答