我已将网格连接到Ext.Direct,但我无法正常工作。
当我创建新记录时,新记录的ID(已在PHP中生成)随响应一起返回,但未保存在网格的存储中。因此,当我尝试更新此记录时,我收到一条错误消息,因为它尝试更新ID为0的记录。
我相信我需要在商店的代理上设置一个JSON Writer,但我还没有成功。
非常感谢任何使其正常工作的帮助。
这是我到目前为止所做的:
商店的型号:
Ext.define('Test.model.Post', {
extend: 'Ext.data.Model',
alias: 'model.postmodel',
requires: [
'Ext.data.Field',
'Ext.data.proxy.Direct',
'Ext.data.reader.Json',
'Ext.data.writer.Json'
],
idProperty: 'idPost',
fields: [
{
name: 'id',
type: 'int'
},
{
name: 'idPost',
type: 'int'
},
{
name: 'achns',
type: 'string'
},
{
name: 'php_poststring',
type: 'string'
},
{
name: 'postNo1',
type: 'int'
},
{
name: 'postNo2',
type: 'int'
},
{
name: 'postNo3',
type: 'int'
},
{
name: 'postNo4',
type: 'int'
},
{
name: 'postNo5',
type: 'int'
},
{
name: 'postNo6',
type: 'int'
},
{
name: 'postNo7',
type: 'int'
},
{
name: 'php_name',
type: 'string'
},
{
name: 'processCode',
type: 'string'
},
{
name: 'processText',
type: 'string'
},
{
name: 'processFreetext',
type: 'string'
},
{
name: 'postUnit',
type: 'string'
},
{
name: 'postQuantity',
type: 'string'
}
],
proxy: {
type: 'direct',
api: {
create: 'Posts.createRecord',
read: 'Posts.getResults',
update: 'Posts.updateRecords',
destroy: 'Posts.destroyRecord'
},
extraParams: {
licence_id: sessionStorage.licenceid,
username: sessionStorage.username,
_c: sessionStorage.control,
project_id: sessionStorage.projectid
},
reader: {
type: 'json',
root: 'data'
},
writer: {
type: 'json',
writeRecordId: false
}
}
});
JSON已发布(createRecord):
{
"action": "Posts",
"method": "createRecord",
"data": [{
"id": 0,
"idPost": 0,
"achns": "I",
"php_poststring": "",
"postNo1": 0,
"postNo2": 0,
"postNo3": 0,
"postNo4": 0,
"postNo5": 0,
"postNo6": 0,
"postNo7": 0,
"php_name": "",
"processCode": "",
"processText": "",
"processFreetext": "",
"postUnit": "",
"postQuantity": ""
}],
"type": "rpc",
"tid": 3
}
JSON响应(createRecord):
{
"type": "rpc",
"tid": 3,
"action": "Posts",
"method": "createRecord",
"result": [{
"success": true,
"message": "Successfully created post",
"dataroot": [{
"idPost": 119, // This ID should be updated in the store
"fkpdHeader": 4,
"fkpdObject": null,
"fkpdElement": null,
"fkndConstructionPart": null,
"fkpdFloor": null,
"fkpdCorrection": null,
"ACHNS": "I",
"status": 10,
"descriptionCode": "",
"ITTBdescription": "",
"freeTextDescription": "",
"quantity": 0,
"unit": "",
"postNo1": 0,
"postNo2": 0,
"postNo3": 0,
"postNo4": 0,
"postNo5": 0,
"postNo6": 0,
"postNo7": 0
}]
}]
}
然后,当我单击插入的记录进行编辑并提交时,会发生这种情况:
JSON已发布(updateRecords):
{
"action": "Posts",
"method": "updateRecords",
"data": [{
"id": 0,
"idPost": 0, // Not set from previous return
"achns": "I",
"php_poststring": "",
"postNo1": 0,
"postNo2": 0,
"postNo3": 0,
"postNo4": 0,
"postNo5": 0,
"postNo6": 0,
"postNo7": 0,
"php_name": "",
"processCode": "",
"processText": "",
"processFreetext": "asdads",
"postUnit": "",
"postQuantity": ""
}],
"type": "rpc",
"tid": 15
}
错误回复(updateRecords):
PHP错误 - 从空值创建默认对象
因为idPost为0,所以无法从数据库中选择要编辑的记录。
编辑(2014-01-20): 添加了一些代码和错误信息。