Ext JS 4:GridPanel - 根据更新的单元格更新列单元格值

时间:2013-06-03 10:59:44

标签: javascript extjs

我有一个显示文章详细信息的网格面板。有几列。当我们的员工更改单元格值时,我希望根据更新的字段匹配所有列字段值。

+----------------------------------------+ 
| ROW ID | COL A | COL B | COL C | COL D | 
+----------------------------------------+ 
|   1    |   TR  |  IST  |  100  |   12  |
+----------------------------------------+
|   2    |   US  |   NY  |   60  |    7  |
+----------------------------------------+
|   3    |   DE  |  BER  |   74  |    9  |
+----------------------------------------+

我想要做的是,当用户将ROW-1 COL D值(12)更改为15时,其他行COL D值应随15自动更改。

+----------------------------------------+ 
| ROW ID | COL A | COL B | COL C | COL D | 
+----------------------------------------+ 
|   1    |   TR  |  IST  |  100  |   15  | <- user has changed the value
+----------------------------------------+
|   2    |   US  |   NY  |   60  |   15  |
+----------------------------------------+
|   3    |   DE  |  BER  |   74  |   15  |
+----------------------------------------+

2 个答案:

答案 0 :(得分:1)

您应该更新后面商店中的记录。 像

这样的东西
store.each(function(record){
    record.set('col_d', 15);

});

答案 1 :(得分:1)

在网格的edit事件中更新您的记录。

以下是一个例子:

Ext.widget('grid', {
    renderTo: Ext.getBody()
    ,columns: [{dataIndex: 'a', header: 'Col A', editor: 'textfield'}]
    ,store: {
        fields: ['a']
        ,data: [{a: 1},{a:2},{a:3}]
    }
    ,plugins: [
        Ext.create('Ext.grid.plugin.CellEditing', {
            clicksToEdit: 1
        })
    ]
    ,listeners: {
        // this event is added to the grid by the CellEditing plugin
        edit: function(editor, e) {
            e.grid.getStore().each(function(record) {
                record.set('a', e.value);
            });
        }
    }
});