PDA

View Full Version : Store Not Syncing With Return Result Data



azinyama
4 Sep 2012, 9:31 PM
Hi all!!!

I'm having a problem with my Ext.Direct and my store. The store is not automatically syncing with the data that is being returned with the new id.

Model:



Ext.define('ClaimCatch_RIS.model.Procedure',
{
extend: 'Ext.data.Model',

fields :
[
{
name: 'id',
type: 'int'
},
{
name: 'Procedure_NAMAS',
type: 'string'
},
{
name: 'Procedure_Name',
type: 'string'
},
{
name: 'Procedure_Abbr',
type: 'string'
},
{
name: 'Procedure_ClaimType',
type: 'string'
},
{
name: 'Procedure_Code',
type: 'string'
},
{
name: 'Procedure_Tag',
type: 'string'
},
{
name: 'Procedure_Address',
type: 'string'
},
{
name: 'Procedure_Email',
type: 'string'
}
]
});


Store:



Ext.define('ClaimCatch_RIS.store.Procedure',
{
extend : 'Ext.data.Store',
id : 'Procedures',
autoLoad : false,
autoSave : false,
autoSync : true,
remoteSort : true,
model : 'ClaimCatch_RIS.model.Procedure',
proxy : {
type : 'direct',
reader : {
type : 'json',
successProperty : 'success',
messageProperty : 'message',
totalProperty : 'total',
root : 'data',
idProperty : 'id'
},
writer : {
type : 'json',
encode : false,
writeAllFields : true
},
api : {
create : _ProcedureHandler.Create_Procedure,
read : _ProcedureHandler.Load_Procedure,
update : _ProcedureHandler.Update_Procedure,
destroy : _ProcedureHandler.Delete_Procedure
},
listeners : {
exception : function(proxy, response, operation)
{
Ext.MessageBox.show(
{
title : 'Remote Exception: Procedure',
msg : operation.getError(),
icon : Ext.MessageBox.ERROR,
buttons : Ext.Msg.OK
});
}
},
afterRequest: function (request, success)
{
if (request.action == 'read')
{
this.readCallback(request, success);
}
else if (request.action == 'create')
{
this.createCallback(request, success);
}
else if (request.action == 'update')
{
this.updateCallback(request, success);
}
else if (request.action == 'destroy')
{
this.deleteCallback(request, success);
}
},
readCallback: function (request, success)
{
if (!request.operation.success)
{
Ext.Msg.show(
{
title : 'Procedure Load Error',
msg : request.operation.getError(),
buttons : Ext.Msg.OK,
icon : Ext.Msg.WARNING
});
}
},
createCallback: function (request, success)
{
if (!request.operation.success && request.operation.hasException())
{
Ext.Msg.show(
{
title : 'Procedure Create Error',
msg : request.operation.getError(),
buttons : Ext.MessageBox.OK,
icon : Ext.MessageBox.ERROR
});
}
},
updateCallback: function (request, success)
{
if (!request.operation.success && request.operation.hasException())
{
Ext.Msg.show(
{
title : 'Procedure Update Error',
msg : request.operation.getError(),
buttons : Ext.MessageBox.OK,
icon : Ext.MessageBox.ERROR
});
}
else
{
}
},
deleteCallback: function (request, success)
{
if (!request.operation.success && request.operation.hasException())
{
Ext.Msg.show(
{
title : 'Procedure Delete Error',
msg : request.operation.getError(),
buttons : Ext.MessageBox.OK,
icon : Ext.MessageBox.ERROR
});
}
},
scope : this
}
});


Direct Method




<DirectMethod()> _
<ParseAsJson()> _
Public Function Update_Procedure(ByVal o As JObject) As JObject
Dim p As Procedure = Nothing

Try
p = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Procedure)(o.ToString())
p.Procedure_Update()
Catch ex As DirectException
Return New JObject(New JProperty("success", False), New JProperty("message", ex.Message))
End Try

Return JObject.Parse(JsonConvert.SerializeObject(p))
End Function


The method returns id with a value from the database. This I have checked. But the id value is not being updated in the store. What am I doing wrong???

azinyama
5 Sep 2012, 3:03 AM
Problem solved. The root being sent back by the json was 'result' and not 'data' as set in the store.