Extjs 在单元格编辑网格中保存编辑的记录

Extjs 在单元格编辑网格中保存编辑的记录,extjs,extjs4,Extjs,Extjs4,如何在单击“保存”按钮时保存已编辑的记录 我的代码: // create the Data Store var store = Ext.create('Ext.data.Store', { //autoSync: true, autoLoad:true, autoDestroy: true, url: 'update_premise.php', model: 'Plant', proxy: { type: 'ajax',

如何在单击“保存”按钮时保存已编辑的记录

我的代码:

// create the Data Store
var store = Ext.create('Ext.data.Store', {
    //autoSync: true,
    autoLoad:true,
    autoDestroy: true,
    url: 'update_premise.php',
    model: 'Plant',
    proxy: {
        type: 'ajax',
        // load remote data using HTTP
        url: 'getLab.php',
        // specify a XmlReader (coincides with the XML format of the returned data)
        reader: {
            type: 'json'
        },
          writer: {
            type: 'json'

        }
    },
    sorters: [{
        property: 'lab_name',
        direction:'ASC'
    }]
});

var cellEditing = Ext.create('Ext.grid.plugin.CellEditing', {
    clicksToEdit: 1
});

// create the grid and specify what field you want
// to use for the editor at each header.
var grid = Ext.create('Ext.grid.Panel', {
    store: store,
    columns: [{
        id: 'lab_name',
        header: 'Common Name',
        dataIndex: 'lab_name',
        flex: 1,
        editor: {
            allowBlank: false
        }
    }],
    selModel: {
        selType: 'cellmodel'
    },
    renderTo: 'editor-grid',
    width: 600,
    height: 300,
    title: 'Lab?',
    frame: true,
    tbar: [
     {
         text: 'Save',
         handler: function ()
         {
               for (var i = 0; i <grid.store.data.items.length; i++) {
                 var record = grid.store.data.items [i];
                 if (record.dirty) {
                 }
             }
         }
     }
     ],
    plugins: [cellEditing]
});
//创建数据存储
var store=Ext.create('Ext.data.store'{
//自动同步:对,
自动加载:对,
自动销毁:对,
url:'update_premise.php',
型号:'植物',
代理:{
键入:“ajax”,
//使用HTTP加载远程数据
url:'getLab.php',
//指定XmlReader(与返回数据的XML格式一致)
读者:{
键入:“json”
},
作者:{
键入:“json”
}
},
分拣机:[{
属性:“实验室名称”,
方向:'ASC'
}]
});
var celleediting=Ext.create('Ext.grid.plugin.celleediting'{
单击编辑:1
});
//创建网格并指定所需的字段
//用于每个标题处的编辑器。
var grid=Ext.create('Ext.grid.Panel'{
店:店,,
栏目:[{
id:'实验室名称',
标题:“公共名称”,
数据索引:“实验室名称”,
弹性:1,
编辑:{
allowBlank:false
}
}],
selModel:{
selType:'cellmodel'
},
renderTo:“编辑器网格”,
宽度:600,
身高:300,
标题:“实验室?”,
框架:对,
待定:[
{
文本:“保存”,
处理程序:函数()
{

对于(var i=0;i基本上取决于您的服务器端。如果您希望通过ajax请求进行保存,您应该使用以下内容:

Ext.Ajax.request({
    url: '/Some/Save',
    method: 'POST',
    params: {
        'RecordId': record.get('Id'),
        'RecordValue': record.get('Value')
    }
})
您应该在
if
语句中使用上述代码:

if (record.dirty) {
    //Save code
}
您还可以将所有行合并到一个大对象中,并在请求中使用它


至于cell editor插件,它是为自动保存记录而设计的。您应该使用
validatedit
事件。文档如下:

您不需要通过ajax调用保存sencha为您完成所有检查和保存

 for (var i = 0; i <grid.store.data.items.length; i++) {
        var record = grid.store.data.items [i];
        if (record.dirty) {
            ...
        }
 }

你能帮我一下吗?我是ExtJS新手。你可以使用“record.set(value)”来更新单元格,其中value是你的新值。
proxy: {
    type: 'ajax',
    api: {
        read    : 'getLab.php',
        create  : 'setLab.php',
        update  : 'setLab.php',
        destroy : 'deleteLab.php'
    }
    reader: {
        type: 'json'
    },
    writer: {
        type: 'json'

    }
}