Extjs从gridpanel内呈现的文本框中获取修改后的值

时间:2015-04-14 14:41:29

标签: extjs

我正在尝试从GridPanel extjs 3.4中呈现的文本框中的界面插入值,下面是如何在列模型中定义文本框:

header: "Rosso",
dataIndex: "contrFilEsRosso",
width: 50,
renderer: function(val, meta,record){
           var str0='<p align="left"><input type="text" name="verde" value="' + val + '
           return str0;
          }

我已从界面修改了文本框内的值,我想将修改后的值发送给控制器。显然,商店具有从后端提取的值,并且没有使用新值更新,所以我尝试了GridPanel的getView()方法,但是我无法获得文本框的新值。

非常感谢。

1 个答案:

答案 0 :(得分:0)

加载到ExtJs网格中的任何数据都将与编辑一起保存在商店中。

您可以通过多种方式获取特定值,但通常只需要将数据发送回服务器以根据需要进行更新。

您可以通过网格上的getStore()方法访问商店,然后您可以通过ID或索引访问任何单个记录。

最好使用EditorGrid并听取afterEdit

等事件

这样的事情应该有用(可能需要一些调整,而不是在移动设备上测试)

Fiddle

Ext.application({
    name: 'MyApp',

    launch: function() {
        var store = Ext.create('Ext.data.Store', {
            storeId: 'simpsonsStore',
            fields: ['name', 'email', 'phone'],

            proxy: {
                type: 'ajax',
                url: 'data1.json',
                reader: {
                    type: 'json',
                    rootProperty: 'items'
                }
            },
            autoLoad: true
        });


        Ext.create("Ext.grid.EditorGridPanel", {
            title: 'Simpsons',
            renderTo: Ext.getBody(),
            store: Ext.data.StoreManager.lookup('simpsonsStore'),
            columns: [{
                text: 'Name',
                dataIndex: 'name'
            }, {
                text: 'Email',
                dataIndex: 'email',
                flex: 1
            }, {
                text: 'Phone',
                dataIndex: 'phone'
            }],
            isCellEditable: function(col, row) {
                return (col == 0);
            },
            listeners: {
                afterEdit: function(e) {
                    alert("You changed " + e.field + " from " + e.originalValue + " to " + e.value);
                }
            },
            height: 200,
            width: 400,
        });

    }

});