1

我正在将一个应用程序升级到 ExtJS 5,我似乎无法使用 RowEditing 获得一个网格来将已编辑的记录发布回我的服务器。

Ext.define("MyRecordDef", { extend: "Ext.data.Model" });

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

var MyStore = new Ext.data.Store({
        model:      "MyRecordDef",
        autoSync:   true,
        proxy: {
            type:           "ajax",
            url:            "ajaxurl.aspx",
            batchActions:   false,
            extraParams:    { Command: 'Save' },
            reader:         { type: "json", rootProperty: "rows" },
            writer:         { type: "json", encode: true, writeAllFields: true }
        }
    });

var MyGrid = new Ext.grid.GridPanel({
    store:      MyStore,
    plugins:    [ MyEditor ],
    columns:        [
        {
        id:             "fieldtoedit",
        dataIndex:      "fieldtoedit",
        editor:         new Ext.form.NumberField()
        }
    ]
});

行编辑器出现,我可以更改值并单击更新按钮,但没有任何反应。没有请求,控制台中没有记录错误。

我添加了以下内容:

MyGrid.on('edit', function (e) {
    alert('You are Editing ' + e.context.record.id);
    MyStore.sync();  // attempt to force a sync
});

我收到带有正确记录号的警报,但仍然没有 AJAX 请求。这就像 ExtJS完全忽略了作者。

我没有为每个 CRUD 操作设置不同的端点,所以我没有使用apiconfig 选项,它应该使用url.

4

1 回答 1

1

首先,您必须定义rootProperty何时writer使用encode: true. 然后在添加请求后fields发送。MyRecordDef

工作示例: http: //jsfiddle.net/jjVwR/3/(保存不起作用,但您可以在控制台上看到请求已发送)

于 2014-07-09T10:45:39.180 回答