Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Delphi for Php (RAD PHP), valor de retorno de una QDataGrid!! (https://www.clubdelphi.com/foros/showthread.php?t=78282)

taqtaq 23-05-2012 02:28:09

Si bien tengo entendido que se pueden enlazar Opengrids como maestro detalle (yo no lo he hecho aun) supongo que a eso lo puedes hacer como ya lo hiciste con la QDBgrid, aunque no lo he probado tampoco.

En el evento javascript BeforeEditCell de la Opengrid maestro, tienes que poner lo siguiente:

Código PHP:

function OpenGridMaetroJSBeforeEditCell($sender, $params)
    {
        ?>
        //begin js
          var fila =jQuery('#OpenGrid1').getGridParam('selrow'); // obtengo el valor de la fila 
          var registro = jQuery("#OpenGrid1").getRowData(fila); // obtengo el registro completo (la fila completa)
          findObj('HiddenField1').value = registro.ID_PERSONA; (pongo en  el hiddenfield el valor de la columna "ID_PERSONA" que es la clave)
        //end
        <?php
         
echo $this->OpenGridMaestro->ajaxCall("ActualizarGrilla",array(),array("OpenGridDetalle"));
    }

No te olvides que en "ActualizarGrilla" tienes que poner la función que te actualiza el detalle

Algo así:
Código PHP:

function ActualizarGrilla()
    {
      
$sql "SELECT * FROM PERSONAS WHERE ID_PERSONA = ".$this->HideField->Value;
      
$this->Query2->close();
      
$this->Query2->SQL=$sql;

      
$this->Query2->Prepare();
      
$this->Query2->close();
      
$this->Query2->open(); //// el Query2 es el dataset enlazado a la OpenGridDetalle
    


De lo que no estoy seguro es si puedes usar el ajaxcall en la OpenGrid y ahora no lo puedo probar.

Pruebalo y me avisas.

Saludos

juanpy 23-05-2012 17:15:19

Detalle del problema.
 
Todo el algoritmo informado en el ultimo post ya fue aplicado, pero falta algo.

Si yo actualizo con el procedimiento:

Código PHP:

function ActualizarGrilla()
    {
      
$sql "SELECT * FROM PERSONAS WHERE ID_PERSONA = ".$this->HideField->Value;
      
$this->Query2->close();
      
$this->Query2->SQL=$sql;

      
$this->Query2->Prepare();
      
$this->Query2->close();
      
$this->Query2->open); //// el Query2 es el dataset enlazado a la OpenGridDetalle
    


La OpenGrid del detalle desaparece de la pantalla.

El procedimiento informado es trasparente con PHP no asi con Axaj.

Ahora, si yo recargo la pantalla (F5 o Ctrl+F5), la OpenGrid del detalle vuelve aparece con los datos filtrados segun la Empresa seleccionada como debe ser.

Lo que necesitamos ahora es encontrar una funcion propia de la OpenGrid que actualize los datos de la OepnGrid, osea algo como:

Código PHP:

function ActualizarGrilla()
    {
      
$sql "SELECT * FROM PERSONAS WHERE ID_PERSONA = ".$this->HideField->Value;
      
$this->Query2->close();
      
$this->Query2->SQL=$sql;

      
$this->Query2->Prepare();
      
$this->Query2->close();
      
$this->Query2->open); //// el Query2 es el dataset enlazado a la OpenGridDetalle
    
}  
 
$this->OpenGrid2->trigger('ReloadGrid');   //No funciona en RADPHP
$this->OpenGrid2->Refresh;                   //No aplica 

Eso es lo que se necesita, una funcion que actualize y/o refresque los datos de la OpenGrig2 en tiempo de ejecucion.

Muchas gracias estimado.

juanpy 23-05-2012 18:25:30

Un ejemplo!!
 
Taqtaq,

Mira el ejemplo en:

El ejemplo es lo mismo que yo quiero mostrar.

Muchas gracias.

taqtaq 01-06-2012 14:22:09

Hola Juampy,
Estuve tratando de hacer andar la opengrid de la forma en que estás necesitando y hasta ahora no he podido hacerlo.
Uno de los inconvenientes con los que me encontré fue que:
Código PHP:

var fila jQuery("#OpenGrid1").getGridParam("selrow"); 

no siempre me devuelve el resultado que necesito, es decir, se supone que me debería dar el número de registro seleccionado pero me di cuenta que eso depende de cómo configuras las columnas para que obtenga de una de ellas el valor, que podría ser el de una clave única y no de un número interno de "renglón".

Me pasó que con distintas consultas me devolvía distintos valores y por ahí encontré que aparentemente hay que configurar la grilla, lo que lamentablemente hasta el momento no sé cómo se hace.


Otra de las cosas que encontré fue que efectivamente la llamada ajaxcall no funciona con la Opengrid, realmente no sé por qué ni tampoco si estoy haciendo algo mal, aunque puedo suponer que podría deberse a que la Opengrid es JQuery, en fin, hoy por hoy no tengo una orientación del por qué.

Por lo pronto creo que hay que seguir investigando respecto de hacer un "update" usando la función del botón refresh de la grilla como vos lo está planteando, aunque por el momento no he podido hacerlo.

Por último, también habría que investigar el ejemplo maestro detalle que hay en el sitio que me indicaste. Sería cuestión de ver con detenemiento el código.

Lamento que las QDBgrid no te hayan funcionado porque de haber sido así, ya estaría solucionado todo el problema, pero bueno, así son las cosas.

En cuanto tenga algún otro dato te lo comento

Saludos

ramflores 27-12-2012 00:47:51

QDatagrid
 
Hola foristas.

tengo 2 dudas

1. Estoy indagando en el mundo de RadPHP, estoy tratando de hacer un pequeño ejemplo sencillo ABC, Usando plantilla con SmartyTemplate, trato de poner el evento onclick o onrowchanged, pero por alguna razon no se almacena el valor en un campo hiddenfield.

Buscando por ahi, me tope con un componente llamado OpenGrid, se ve muy bien, pero al quererlo integrar con la plantilla no lo despliega, existe alguna restriccion de componentes para usarce con las Plantillas SmartyTemplate??

Gracias de antemano

LEONARDO19712 22-02-2013 16:00:55

Hola, no se si aun te sirva pero yo lo manejaría de la siguiente manera, como lo que quieres es que aprtir de un registro de la grilla el haga una consulta y muestre el resultado en otra grilla es lo que entiendo, pues simplemente en el formulario de la grilla principal capturas los datos con javascript tal como te lo explicaron y los guardas ahi mismo en campos edit, desde ese momento ya puedes trabajar con php pues php tomara los valores puestos en esos campos. por medio de un boton mostrar resultados puedes abrir una ventana emergente y cargar la informacion ahi. es una opcion que no afecta la grilla anterior o principal, otra puede ser ajax


La franja horaria es GMT +2. Ahora son las 08:42:53.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi