Crear un Grid personalizado a partir de un Select Criteria

De CidesaWiki

Saltar a navegación, buscar
Code provided by Miki.

Para comenzar deben revisar:

1.- Si tienen en su /siga/lib la carpeta /helper y dentro de esa el archivo FooBarHelper.php. 2.- Si en /siga/web/js se encuentra el archivo tools.js 3.- Si en /siga/web/images/ se encuentra el archivo delete.png


Luego creamos el arreglo de objetos resultante de nuestra consulta sql, esto iria en el actions.class de nuestra forma:

$c = new Criteria();
$c->add(CiasiiniPeer::CODPRE,str_pad($this->ciasiini->getCodpre(),32,' '));
$c->add(CiasiiniPeer::PERPRE,'00',Criteria::NOT_EQUAL);
$c->addAscendingOrderByColumn(CiasiiniPeer::PERPRE);
$this->per = CiasiiniPeer::doSelect($c);

Entonces le pasamos al edit_form nuestro objeto "$this->per" a traves del edit_success


Luego en el edit_form de la forma en la que estamos trabajando, colocar arriba:

<?php use_helper('FooBar'); ?>

Y luego dentro del mismo edit, donde vayamos a colocar el grid:

//Las columnas del grid son manejadas de la siguiente manera: 
//Columna 1 = primer dato de la bd a mostrar en el grid
//Columna 2 = segundo dato de la bd a mostrar en el grid

<?
$filas=17;  //filas predeterminadas con las que se va a cargar el grid, si es mayor que la cantidad de datos de la bd, añade las otras filas vacias
$eliminar=true;  //si el grid va a llevar la columna de eliminar o no.
$titulos=array("Periodo","Monto");  //el titulo por cada una de las columnas del grid (*)
$anchos=array("3%","94%");  //el ancho de cada una de las columnas del grid (*)
$alignf=array("center","right");  //la alineacion de los objetos que se encuentran en cada una de las columnas del grid (*)
$alignt=array("center","right");  //la alineacion de los datos dentro de la caja de texto de las columnas del grid (*)
$campos=array("Perpre","Mondis");  //los campos de la bd, de cada una de las columnas del grid, si no es dato de la bd, colocamos "".
$montos=array("2"); //Nro. de la columna(s) del grid que van a ser de tipo "monto-moneda". Ej: en este caso solo la columna "2" del grid
$totales=array("total"); //Nombre de la(s) caja(s) de texto donde se mostraran los totales de las columnas tipo monto. En el orden de "$montos"
$html=array('type="text" size="2"','type="text" size="10"');  //Config HTML de las cajitas de texto de cada columna del grid.
$js=array('','onKeypress="entermonto(event,this.id)"'); //Funciones JS asociadas a la cajita de cada columna del grid.

//En este ejemplo $per es el arreglo de objetos que resulta de mi consulta SQL
echo grid_tag($filas,$eliminar,$titulos,$anchos,$alignf,$alignt,$campos,$montos,$totales,$html,$js,$per);
?>

Leyenda: (*) Sin tomar en cuenta la columna "Eliminar", ésta se crea automaticamente y con unos valores estaticos

Nota: para agregar alguna funcion js adicional al grid, esta debera ser colocada en el edit_form en el que estas trabajando y debe ser llamada a traves del arreglo $js que le pasamos al grid_tag.

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas