[Solucionado]Jalar e Insertar Id de un Grid Seleccionado
Problema: Como obtengo el valor del id de cada FILA, para insertarlo ah mi Base de datos?
el insertar ya me sale con fechas concatenadas, por Sesion y le puse un codigo por ahi para que se autogenere + 1 el codigo. lo que quiero es que al hacer CLICK en cada FILA, al momento de insertar, me inserte tambien el Id de la fila del grid seleccionado.
en la variable " $id_cita=$_POST['id_cita'];",
Ejemplo.
Codigo PHP
function registroAgenda($id_usuario){ $dt_fecha=$_POST['dt_fecha']; $dt_time=$_POST['dt_time']; // Variable del id de la fila EXTjs $id_cita=$_POST['id_cita']; $st_asunto=$_POST['st_asunto']; $sql1="SELECT MAX(id_agenda) AS MAXIMO FROM tb_cm_agenda"; $query1=mysql_query($sql1); $max=mysql_fetch_array($query1); if($max==FALSE) return FALSE; $newId=$max['MAXIMO']+1; $query="INSERT INTO tb_cm_agenda ( id_agenda , dt_fecha ,in_tipo, id_programa , id_cita, st_ubicacion, st_asunto, id_contacto) VALUES ('".$newId."','".$dt_fecha." ".$dt_time."', 1 , 0 , 1561 , 0 , '$st_asunto','".$id_usuario."')"; $result = mysql_query($query); echo '1'; }Codigo Ventana para insertar agenda.
var agendaCreateForm; var agendaCreateWindow; var dt_fechaField; var dt_timeField; var st_asuntoField; function createTheagenda(){ if(isagendaFormValid()){ Ext.Ajax.request({ waitMsg: 'Please wait...', url: 'agenda.php', params: { envio: "INSERTAR", dt_fecha: dt_fechaField.getValue().format('Y-m-d'), dt_time: dt_timeField.getValue(), st_asunto: st_asuntoField.getValue() }, success: function(response){ var result=eval(response.responseText); switch(result){ case 1: Ext.MessageBox.alert('Se Registro una cita. ','Se ah Guardado la Cita en la Agenda'); favoritoDataStore.reload(); agendaCreateWindow.hide(); break; default: Ext.MessageBox.alert('ERROR: ','No se pudo registrar a la Agenda.'); break; } }, failure: function(response){ var result=response.responseText; Ext.MessageBox.alert('ERROR: ','No encontro una BD'); } }); } else { Ext.MessageBox.alert('ERROR: ', 'Debes de llenar todos los campos'); } } function resetagendaForm(){ dt_fechaField.setValue(''), dt_timeField.setValue(''), st_asuntoField.setValue('') } function isagendaFormValid(){return( dt_fechaField.isValid() && dt_timeField.isValid() && st_asuntoField.isValid()); } function displayFormWindow(){ if(!agendaCreateWindow.isVisible()){ resetagendaForm(); agendaCreateWindow.show(); } else { agendaCreateWindow.toFront(); } } dt_timeField = new Ext.form.ComboBox({ fieldLabel: 'Hora', store:new Ext.data.SimpleStore({ fields:['dt_timeValue', 'dt_timeName'], data: [['07:00:00','07.00 am'],['07:15:00','07.15 am'],['07:30:00','07.30 am'],['07:45:00','07.45 am']] }), mode: 'local', displayField: 'dt_timeName', allowBlank: false, valueField: 'dt_timeValue', anchor:'95%', triggerAction: 'all' }); st_asuntoField = new Ext.form.TextArea({ id:'st_asuntoField', fieldLabel: 'Asunto(100)', maxLength: 100, allowBlank: false, anchor : '90%', maskRe: /([a-zA-Z0-9\s]+)$/ }); agendaCreateForm = new Ext.FormPanel({ labelAlign: 'top', bodyStyle:'padding:5px', width: 200, items: [{ layout:'column', border:false, items:[{ columnWidth:0.4, layout: 'form', border:false, items: [dt_fechaField] },{ columnWidth:0.4, layout: 'form', border:false, items: [dt_timeField] },{ columnWidth:0.9, layout: 'form', border:false, items: [st_asuntoField] }] }], buttons: [{ text: 'Registrar', handler: createTheagenda },{ text: 'Cancelar', handler: function(){ agendaCreateWindow.hide(); } }] }); agendaCreateWindow = new Ext.Window({ id: 'agendaCreateWindow', title: 'Registro de Agendas', closable:true, width: 300, height: 250, plain:true, layout: 'fit', items: agendaCreateForm });Codigo. Grid.
var favoritoDataStore; var favoritoColumnModel; var favoritoListingEditorGrid; var favoritoListingWindow; var IncomeField; favoritoDataStore = new Ext.data.Store({ id: 'favoritoDataStore', proxy: new Ext.data.HttpProxy({ url: 'exhibidores.php', method: 'POST' }), baseParams:{envio: "LISTAR"}, reader: new Ext.data.JsonReader({ root: 'results', totalProperty: 'total' },[ {name: 'id_entidad', type: 'string', mapping: 'id_entidad'}, {name: 'st_razsoc', type: 'string', mapping: 'st_razsoc'}, {name: 'st_stands', type: 'string', mapping: 'st_stands'}, {name: 'st_cargo', type: 'string', mapping: 'st_cargo'}, ]), sortInfo:{field: 'st_razsoc', direction: "ASC"} }); favoritoColumnModel = new Ext.grid.ColumnModel( [ { header: 'Empresas', readOnly: true, dataIndex: 'st_razsoc', width: 340, renderer: function(value, cell){ cell.css = "coolcell"; return value; } },{ header: 'Stands', dataIndex: 'st_stands', width: 310 },{ header: 'Agenda', dataIndex: 'st_cargo', width: 80 },{ header: 'Perfil', dataIndex: 'id_entidad', width: 90, renderer: url_perfil }] ); function url_perfil(val){ return '<a href="_perfil.php?id='+val+'"><img src=images/user.png></a>'; } favoritoColumnModel.defaultSortable= true; favoritoListingEditorGrid = new Ext.grid.EditorGridPanel({ id: 'favoritoListingEditorGrid', store: favoritoDataStore, cm: favoritoColumnModel, enableColLock:false, clicksToEdit:1, selModel: new Ext.grid.RowSelectionModel({singleSelect:false}), bbar: new Ext.PagingToolbar({ pageSize: 10, store: favoritoDataStore, displayInfo: true }), tbar: [{ text: 'Insertar Cita', tooltip: 'Solicite una cita', iconCls:'add', handler: displayFormWindow } ] }); favoritoListingWindow = new Ext.Window({ id: 'favoritoListingWindow', title: 'MIS FAVORITOS - EXHIBIDORES IIMP', width:854, height:350, x:0, y:0, draggable:false, closable:false, resizable : false, plain:false, layout: 'fit', items: favoritoListingEditorGrid }); favoritoDataStore.load({params: {start: 0, limit: 10}}); favoritoListingWindow.show();
hola mehparra, los grids tienen un listener que te permite recuperar los elementos de la fila seleccionada funciona algo así:
listeners: { rowclick: function(grid,rowindex,e){ var fila=grid.getStore().getAt(rowindex);//<-- fila que has seleccionado // Tu_Forma.getForm().reset();<--Este codigo lo pudes usar para resetear tu formulario, sin necesidad de hacerlo campo por campo //fila.get('VID_IDE') <-- de esta manera puedes acceder a las columnas de la fila seleccionada Ext.getCmp('id_cita').setValue(fila.get('id_del_grid'));//<-- así pudes darle el de cualquier columna de tu fila seleccionada al campo que quieras }debes crear el campo que guarde el id de la cita en tu formulario, puedes hacer que sea un campo oculto (no se mostrara en el form al usuario) quedaría algo asi:
//en tu form agregas este campo { xtype : 'hidden', name : id_cita', id : 'id_cita' }y simplemente le cambias el valor en el listener que se miró al comienzo. y listo, lo envías sin problema. Otro punto importante es que Extjs cuenta con un campo de fecha y otro de hora, se llaman datefield y timefield, te facilita mucho el uso y manejo de las fechas, puedes ver algo de información de ellos en: [url=http://extjs.com/deploy/ext/docs/output/Ext.form.DateField.html]DateField[/url] [url=http://extjs.com/deploy/dev/docs/?class=Ext.form.TimeField]TimeField[/url] Ejempolo TimeField:
new Ext.form.TimeField({ minValue: '9:00 AM', //<-- desde la hora que inicia maxValue: '6:00 PM',//<-- la hora máxima que permitiría elegir increment: 30 //<-- incrementos de tiempo (en este caso va de 30 minutos en 30 minutos) });Espero haberte ayudado un poco. salu2 Crespo
Crespo gracias por responder.
Lo probe así. Selecciono la fila y con el Alert si me devuelve el valor del id por fila.
ahora pruebo con mi apliacion normal. seleccion la fila, luego apreto el boton registar agenda. aparece el formulario registro y el valor se guarda en CERO, "0" no sé por que :S
listeners: { EditorGrid.on('rowclick',function(EditorGrid,rowindex,e){ var fila= EditorGrid.getStore().getAt(rowindex); Ext.getCmp('id_cita').setValue(fila.get('id_entidad')); //Ext.Msg.alert("ID: "+fila.get('id_entidad')); }); } id_citaField= new Ext.form.Hidden({ xtype : 'hidden', id:'id_citaField', name: 'id_citaField', fieldLabel: 'num', maxLength: 100, allowBlank: false, anchor : '50%' });
hola mehparra, mira en la parte donde dice [b]Ext.getCmp('id_cita')[/b] debes colocar [b]Ext.getCmp('id_citaField') [/b] ya que detro de getCmp debes colocar el id del campo que quieres traer.
Quedaría algo asi:
listeners: { EditorGrid.on('rowclick',function(EditorGrid,rowindex,e){ var fila= EditorGrid.getStore().getAt(rowindex); Ext.getCmp('id_citaField').setValue(fila.get('id_entidad')); //Ext.Msg.alert("ID: "+fila.get('id_entidad')); }); } id_citaField= new Ext.form.Hidden({ xtype : 'hidden', id:'id_citaField', name: 'id_citaField', fieldLabel: 'num', maxLength: 100, allowBlank: false, anchor : '50%' });y en el campo oculto puedes quitar fieldlabel, anchor y todo lo que tenga que ver con la apariencia visual ya que nunca se mostrara al usuario.. solo tu sabrás que existe.. Espero ahora si te funcione!! salu2 Crespo
Crespo disculpa por copiar mal la sintaxis asi lo habia echo, como tu pusiste. pero creo que el valor se pierde cuando apreto el boton. Registrar Cita. ¿Alguna Solucion?
Pues la verdad no se que puede estar pasando, pues teóricamente debe funcionar... Trata de hacerle un seguimiento a la variable, desde el listener hasta donde la envías, para que tengas una idea de en que momento se te está perdiendo el valor, cuida de no estar resteando el formulario en medio del camino..
listeners: { EditorGrid.on('rowclick',function(EditorGrid,rowindex,e){ var fila= EditorGrid.getStore().getAt(rowindex); Ext.getCmp('id_citaField').setValue(fila.get('id_entidad')); Ext.Msg.alert("Campo Oculto "+ Ext.getCmp('id_citaField').getValue()); //<-- muestralo acá a ver si esta tomando el dato correctamente }); } function createTheagenda(){ if(isagendaFormValid()){ Ext.Msg.alerta("campo oculto", Ext.getCmp('id_citaField').geetValue()) //<-- muestralo acá a ver con que valor llega a la función Ext.Ajax.request({ waitMsg: 'Please wait...', .....por ahora no se me ocurre más... si quieres dejas tu código completo como lo tengas y vamos mirando con mas detalle para encontrar tu error!! salu2 Crespo
Hey Crespo ^^ efectivamnete hera el Reset Gracias, Muchas Gracias. Ahorita pongo el codigo <!-- s:roll: --><!-- s:roll: -->.
EditorGrid = new Ext.grid.EditorGridPanel({
id: 'EditorGrid',
store: DatastoreLista,
cm: ColumnModel,
listeners: {
rowclick: function(grid,rowindex,e){
var fila=grid.getStore().getAt(rowindex);
agendaCreateForm.getForm().reset();
Ext.getCmp('id_citaField').setValue(fila.get('id_entidad'));
//Ext.Msg.alert("ID: "+fila.get('id_entidad'));
// Ext.Msg.alert("Campo Oculto "+ Ext.getCmp('id_citaField').getValue());
}},
autoScroll:true,
enableColLock:false,
clicksToEdit:1,
width:682,
height:238,
selModel: new Ext.grid.RowSelectionModel({singleSelect:false}),
tbar: [{
text: 'Solicitar un Cita',
tooltip: 'Solicite una cita',
iconCls:'add',
handler: displayFormWindow
}]
});
¿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.