Foro

[Solucionado]Jalar e Insertar Id de un Grid Seleccionado

0
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();
0
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
0
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%'
    });
0
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
0
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?
0
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
0
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 }] });
0
Que bueno saber que lograste solucionar tu problema, te felicito!! <!-- s:D --><!-- s:D --> Nos estamos leyendo!! <!-- s;) --><!-- s;) --> Salu2 Crespo

¿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.