Crear un Grid personalizado a partir de un Select Criteria
De CidesaWiki
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'); ?>
//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.
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