store local, agregar desde form y luego enviar a servidor
Buenas, no sé si me falta tomar más tazas de café el día de hoy pero no logro dar con algo que se supone que es simple, lo explico haber si algún se paletea con una ayuda:
quiero agregar datos a una grilla desde un formulario y luego que tengo todo los datos enviarlos al servidor.
se supone que es simple, pero hasta ahora he trabajado principalmente enviado desde un formulario directamente al servidor y luego recargando mi store por lo que la grilla se mantiene actualizada, también he hecho pruebas editando directamente en la grilla. pero este caso no puedo resolverlo, estoy maniado <!-- s:oops: --><!-- s:oops: --> . cualquier luz será infinitamente agradecida <!-- s:lol: --><!-- s:lol: -->
Has un submit al formulario y en el success recarga el store del grid <!-- s:) --><!-- s:) -->
//con esto guardas lo que el usuario capturo en el formulario form.getForm().submit({ url : "record/save.do", success: function(){ // esto se debe ejecutar cuando se ha guardado el nuevo registro grid.getStore().load(); } });
tengo 2 problemas con mi codigo y me gustaria que me echaran una manito:
guardo los datos en el store, un JsonStore, con su propiedad atuoSave a false para que no guarde la info hasta que se lo diga a traves de un boton "guardar", hasta ahi todo bien, el problema surge que por alguna razon por el lado del php el for each no me resulta, a veces me toma los valores y a veces no, aqui esta mi codigo php:
function agregar(){ global $base; $datos = json_decode($_POST['datos']); foreach ($datos as $key){ $id_articulo = $key->id_articulo; $precio = $key->precio; $cantidad = $key->cantidad; $sql = "INSERT INTO $base VALUES (default,$id_articulo,$cantidad,$precio)"; $rs = mysql_query($sql) or falla("servidor", mysql_errno()); } echo "{success:true}"; }por alguna razón que desconozco no me vierte los valores en las variables. aqui esta mi json :
datos{"id_articulo":"2","descripcion":"AMPOLLETA","nro_parte":"SDASD","cantidad":32,"precio":323,"total":10336} operacion agregar xaction createlo segundo que quisiera saber es como controlar el evento si falla, como el success en un Ext.ajax.request cualquier luz será agradecida
me he dado cuenta que el problema está cuando efectuo el metodo store.save() y existe un solo elemento en el store. no me lo envia con los corchetes "[ ]", pero si cuando envio mas de un elemento. he aqui mi definicion del store, talvez mi problema este en el indice:
var writer = new Ext.data.JsonWriter({ encode: true, writeAllFields: true // write all fields, not just those that changed }); stDetalle = new Ext.data.JsonStore({ url : pagina_base, root : 'datos', autoSave : false, idIndex : 0, writer : writer, baseParams : { operacion : 'agregar' }, fields : ['id_articulo','descripcion','nro_parte','cantidad','precio',{name : 'total', type : 'int'}], listeners : { add : function(s){ var total = moneda(s.sum('total')); Ext.getCmp('totalmov').setValue(total); }, remove : function(s){ var total = moneda(s.sum('total')); Ext.getCmp('totalmov').setValue(total); } } });
¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook
Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.