Grid

De CidesaWiki

(Diferencias entre revisiones)
Saltar a navegación, buscar
(New page: <pre>Code provided by Miki.</pre> ---------------------- Para comenzar deben revisar: 1.- Si tienen en su /siga/lib la carpeta /helper y dentro de esa el archivo FooBarHelper.php. 2.- Si ...)
Línea 1: Línea 1:
-
<pre>Code provided by Miki.</pre>
+
<pre>Code provided by Miki && Luelher.</pre>
----------------------
----------------------
Para comenzar deben revisar:
Para comenzar deben revisar:
-
1.- Si tienen en su /siga/lib la carpeta /helper y dentro de esa el archivo FooBarHelper.php.
+
1.- Si tienen en su /siga/lib la carpeta /helper y dentro de esa el archivo GridHelper.php.
2.- Si en /siga/web/js se encuentra el archivo tools.js
2.- Si en /siga/web/js se encuentra el archivo tools.js
3.- Si en /siga/web/images/ se encuentra el archivo delete.png
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:
+
Luego creamos el arreglo de objetos resultante de nuestra consulta sql, esto estaría en el actions.class de nuestra forma:
<pre>
<pre>
$c = new Criteria();
$c = new Criteria();
Línea 21: Línea 21:
Luego en el edit_form de la forma en la que estamos trabajando, colocar arriba:
Luego en el edit_form de la forma en la que estamos trabajando, colocar arriba:
<pre>
<pre>
-
<?php use_helper('FooBar'); ?>
+
<?php use_helper('Grid'); ?>
</pre>
</pre>
--------------------------------------------------------------
--------------------------------------------------------------
-
Y luego dentro del mismo edit, donde vayamos a colocar el grid:
+
Hay 2 formas de pasar los parámetros de configuración al Grid:
 +
 
 +
* Arreglos
<pre>
<pre>
-
//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=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
+
$cabeza="Existencia por Almacenes";
-
$eliminar=true; //si el grid va a llevar la columna de eliminar o no.
+
$eliminar=true;
-
$titulos=array("Periodo","Monto"); //el titulo por cada una de las columnas del grid (*)
+
$titulos=array("Cod. Almacen","Descripción","Cod. Ubicacion","Ubicación","Exi. Mínima","Exi. Máxima","Exi. Actual","Reorden");
-
$anchos=array("3%","94%"); //el ancho de cada una de las columnas del grid (*)
+
$ancho="1100";
-
$alignf=array("center","right"); //la alineacion de los objetos que se encuentran en cada una de las columnas del grid (*)
+
$alignf=array('center','left','center','left','right','right','right','right');
-
$alignt=array("center","right"); //la alineacion de los datos dentro de la caja de texto de las columnas del grid (*)
+
$alignt=array('center','left','center','left','right','right','right','right');
-
$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 "".
+
$campos=array('Codalm','Nomalm','Codubi','Nomubi','Eximin','Eximax','Exiact','Ptoreo');
-
$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
+
$catalogos=array('Cadefalm-sf_admin_edit_form-x1-x2','','Cadefubi-sf_admin_edit_form-x3-x4','','','','','');// por todas las columnas, si no tiene, se coloca vacio
-
$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"
+
$ajax=array('2-x2-x1','','3-x4-x3','','','','',''); //parametro-cajitamostrar-autocompletar
-
$html=array('type="text" size="2"','type="text" size="10"'); //Config HTML de las cajitas de texto de cada columna del grid.
+
$tipos=array('t','t','m','m','m','m'); //texto, monto, fecha --solo de los campos a grabar, no de todo el grid
-
$js=array('','onKeypress="entermonto(event,this.id)"'); //Funciones JS asociadas a la cajita de cada columna del grid.
+
$montos=array("5","6","7","8");
 +
$totales=array("", "", "caregart_exitot", "");
 +
$mascaraubicacion=$this->mascaraubicacion;
 +
$html=array('type="text" size="5"','type="text" size="25" disabled=true','type="text" size="5"','type="text" size="25" disabled=true','type="text" size="10"','type="text" size="10"','type="text" size="10"','type="text" size="10"');
 +
$js=array('','','onKeyDown="javascript:return dFilter (event.keyCode, this,'.chr(39).$mascaraubicacion.chr(39).')" onKeyPress="javascript:cadena=rayaenter(event,this.value);if (event.keyCode==13 || event.keyCode==9){document.getElementById(this.id).value=cadena;}"','','onKeypress="entermonto(event,this.id)"','onKeypress="entermonto(event,this.id)"','onKeypress="entermonto(event,this.id)"','onKeypress="entermonto(event,this.id)"');
 +
$grabar=array("1","3","5","6","7","8");
 +
$filatotal='';
 +
 +
 +
$this->obj=array('cabeza'=>$cabeza, 'filas'=>$filas, 'eliminar'=>$eliminar, 'titulos'=>$titulos,
 +
'ancho'=>$ancho, 'alignf'=>$alignf, 'alignt'=>$alignt, 'campos'=>$campos, 'catalogos' => $catalogos,
 +
'ajax' => $ajax, 'tipos' => $tipos, 'montos'=>$montos, 'filatotal' => $filatotal, 'totales'=>$totales,
 +
'html'=>$html, 'js'=>$js, 'datos'=>$per, 'grabar'=>$grabar, 'tabla' => 'Caartalm');
 +
</pre>
 +
 
 +
* Objetos de Configuración
 +
 
 +
<pre>
 +
 
 +
$mascaraubicacion=$this->mascaraubicacion;
 +
// $i18n = $this->getContext()->getI18N();
 +
// Se crea el objeto principal de la clase OpcionesGrid
 +
$opciones = new OpcionesGrid();
 +
// Se configuran las opciones globales del Grid
 +
$opciones->setEliminar(true);
 +
$opciones->setTabla('Caartalm');
 +
$opciones->setAnchoGrid(1150);
 +
$opciones->setTitulo('Existencia por Almacenes');
 +
$opciones->setHTMLTotalFilas(' ');
 +
// Se generan las columnas
 +
$col1 = new Columna('Cod. Almacen');
 +
$col1->setTipo(Columna::TEXTO);
 +
$col1->setEsGrabable(true);
 +
$col1->setAlineacionObjeto(Columna::CENTRO);
 +
$col1->setAlineacionContenido(Columna::CENTRO);
 +
$col1->setNombreCampo('codalm');
 +
        $col1->setCatalogo('cadefalm','sf_admin_edit_form','2');
 +
        $col1->setAjax(2,2);
 +
       
 +
        $col2 = new Columna('Descripción');
 +
        $col2->setTipo(Columna::TEXTO);
 +
        $col2->setAlineacionObjeto(Columna::IZQUIERDA);
 +
        $col2->setAlineacionContenido(Columna::IZQUIERDA);
 +
        $col2->setNombreCampo('codalm');
 +
        $col2->setHTML('type="text" size="25" disabled=true');
 +
       
 +
        $col3 = clone $col1;
 +
        $col3->setTitulo('Cod. Ubicacion');
 +
        $col3->setNombreCampo('codubi');
 +
        $col3->setCatalogo('cadefubi','sf_admin_edit_form','4');
 +
        $col3->setJScript('onKeyDown="javascript:return dFilter (event.keyCode, this,'.chr(39).$mascaraubicacion.chr(39).')" onKeyPress="javascript:cadena=rayaenter(event,this.value);if (event.keyCode==13 || event.keyCode==9){document.getElementById(this.id).value=cadena;}"');
 +
        $col3->setAjax(3,4);
 +
       
 +
        $col4 = clone $col2;
 +
        $col4->setTitulo('Ubicación');
 +
        $col4->setNombreCampo('Nomubi');
 +
       
 +
        $col5 = new Columna('Exi. Mínima');
 +
        $col5->setTipo(Columna::MONTO);
 +
        $col5->setEsGrabable(true);
 +
        $col5->setAlineacionContenido(Columna::IZQUIERDA);
 +
        $col5->setAlineacionObjeto(Columna::IZQUIERDA);
 +
        $col5->setNombreCampo('Eximin');
 +
        $col5->setEsNumerico(true);
 +
        $col5->setHTML('type="text" size="10"');
 +
        $col5->setJScript('onKeypress="entermonto(event,this.id)"');
 +
 
 +
        $col6 = clone $col5;
 +
        $col6->setTitulo('Exi. Máxima');
 +
        $col6->setNombreCampo('Eximax');
 +
       
 +
        $col7 = clone $col5;
 +
        $col7->setTitulo('Exi. Actual');
 +
        $col7->setNombreCampo('Exiact');
 +
        $col7->setEsTotal(true,'caregart_exitot');
 +
       
 +
        $col8 = clone $col5;
 +
        $col8->setTitulo('Reorden');
 +
        $col8->setNombreCampo('Ptoreo');
 +
       
 +
        // Se guardan las columnas en el objetos de opciones       
 +
        $opciones->addColumna($col1);
 +
        $opciones->addColumna($col2);
 +
        $opciones->addColumna($col3);
 +
        $opciones->addColumna($col4);
 +
        $opciones->addColumna($col5);
 +
        $opciones->addColumna($col6);
 +
        $opciones->addColumna($col7);
 +
        $opciones->addColumna($col8);
 +
    // Ee genera el arreglo de opciones necesario para generar el grid
 +
        $this->obj = $opciones->getConfig($per);
-
//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);
 
-
?>
 
</pre>
</pre>

Revisión de 15:19 30 abr 2007

Code provided by Miki && Luelher.

Para comenzar deben revisar:

1.- Si tienen en su /siga/lib la carpeta /helper y dentro de esa el archivo GridHelper.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 estaría 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('Grid'); ?>

Hay 2 formas de pasar los parámetros de configuración al Grid:


$filas=17;
$cabeza="Existencia por Almacenes";
$eliminar=true;
$titulos=array("Cod. Almacen","Descripción","Cod. Ubicacion","Ubicación","Exi. Mínima","Exi. Máxima","Exi. Actual","Reorden");
$ancho="1100";
$alignf=array('center','left','center','left','right','right','right','right');
$alignt=array('center','left','center','left','right','right','right','right');
$campos=array('Codalm','Nomalm','Codubi','Nomubi','Eximin','Eximax','Exiact','Ptoreo');
$catalogos=array('Cadefalm-sf_admin_edit_form-x1-x2','','Cadefubi-sf_admin_edit_form-x3-x4','','','','','');// por todas las columnas, si no tiene, se coloca vacio
$ajax=array('2-x2-x1','','3-x4-x3','','','','',''); //parametro-cajitamostrar-autocompletar
$tipos=array('t','t','m','m','m','m'); //texto, monto, fecha --solo de los campos a grabar, no de todo el grid
$montos=array("5","6","7","8");
$totales=array("", "", "caregart_exitot", "");
$mascaraubicacion=$this->mascaraubicacion;
$html=array('type="text" size="5"','type="text" size="25" disabled=true','type="text" size="5"','type="text" size="25" disabled=true','type="text" size="10"','type="text" size="10"','type="text" size="10"','type="text" size="10"');
$js=array('','','onKeyDown="javascript:return dFilter (event.keyCode, this,'.chr(39).$mascaraubicacion.chr(39).')" onKeyPress="javascript:cadena=rayaenter(event,this.value);if (event.keyCode==13 || event.keyCode==9){document.getElementById(this.id).value=cadena;}"','','onKeypress="entermonto(event,this.id)"','onKeypress="entermonto(event,this.id)"','onKeypress="entermonto(event,this.id)"','onKeypress="entermonto(event,this.id)"');
$grabar=array("1","3","5","6","7","8");
$filatotal='';
		 
		
$this->obj=array('cabeza'=>$cabeza, 'filas'=>$filas, 'eliminar'=>$eliminar, 'titulos'=>$titulos, 
		'ancho'=>$ancho, 'alignf'=>$alignf, 'alignt'=>$alignt, 'campos'=>$campos, 'catalogos' => $catalogos, 
		'ajax' => $ajax, 'tipos' => $tipos, 'montos'=>$montos, 'filatotal' => $filatotal, 'totales'=>$totales, 
		'html'=>$html, 'js'=>$js, 'datos'=>$per, 'grabar'=>$grabar, 'tabla' => 'Caartalm');

$mascaraubicacion=$this->mascaraubicacion;
// $i18n = $this->getContext()->getI18N();
// Se crea el objeto principal de la clase OpcionesGrid
$opciones = new OpcionesGrid();
// Se configuran las opciones globales del Grid 
$opciones->setEliminar(true);
$opciones->setTabla('Caartalm');
$opciones->setAnchoGrid(1150);
$opciones->setTitulo('Existencia por Almacenes');
$opciones->setHTMLTotalFilas(' ');
// Se generan las columnas
$col1 = new Columna('Cod. Almacen');
$col1->setTipo(Columna::TEXTO);
$col1->setEsGrabable(true);
$col1->setAlineacionObjeto(Columna::CENTRO);
$col1->setAlineacionContenido(Columna::CENTRO);
$col1->setNombreCampo('codalm');
        $col1->setCatalogo('cadefalm','sf_admin_edit_form','2');
        $col1->setAjax(2,2);
        
        $col2 = new Columna('Descripción');
        $col2->setTipo(Columna::TEXTO);
        $col2->setAlineacionObjeto(Columna::IZQUIERDA);
        $col2->setAlineacionContenido(Columna::IZQUIERDA);
        $col2->setNombreCampo('codalm');
        $col2->setHTML('type="text" size="25" disabled=true');
        
        $col3 = clone $col1;
        $col3->setTitulo('Cod. Ubicacion');
        $col3->setNombreCampo('codubi');
        $col3->setCatalogo('cadefubi','sf_admin_edit_form','4');
        $col3->setJScript('onKeyDown="javascript:return dFilter (event.keyCode, this,'.chr(39).$mascaraubicacion.chr(39).')" onKeyPress="javascript:cadena=rayaenter(event,this.value);if (event.keyCode==13 || event.keyCode==9){document.getElementById(this.id).value=cadena;}"');
        $col3->setAjax(3,4);
        
        $col4 = clone $col2;
        $col4->setTitulo('Ubicación');
        $col4->setNombreCampo('Nomubi');
        
        $col5 = new Columna('Exi. Mínima');
        $col5->setTipo(Columna::MONTO);
        $col5->setEsGrabable(true);
        $col5->setAlineacionContenido(Columna::IZQUIERDA);
        $col5->setAlineacionObjeto(Columna::IZQUIERDA);
        $col5->setNombreCampo('Eximin');
        $col5->setEsNumerico(true);
        $col5->setHTML('type="text" size="10"');
        $col5->setJScript('onKeypress="entermonto(event,this.id)"');

        $col6 = clone $col5;
        $col6->setTitulo('Exi. Máxima');
        $col6->setNombreCampo('Eximax');
        
        $col7 = clone $col5;
        $col7->setTitulo('Exi. Actual');
        $col7->setNombreCampo('Exiact');
        $col7->setEsTotal(true,'caregart_exitot');
        
        $col8 = clone $col5;
        $col8->setTitulo('Reorden');
        $col8->setNombreCampo('Ptoreo');
        
        // Se guardan las columnas en el objetos de opciones        
        $opciones->addColumna($col1);
        $opciones->addColumna($col2);
        $opciones->addColumna($col3);
        $opciones->addColumna($col4);
        $opciones->addColumna($col5);
        $opciones->addColumna($col6);
        $opciones->addColumna($col7);
        $opciones->addColumna($col8);
	    // Ee genera el arreglo de opciones necesario para generar el grid
        $this->obj = $opciones->getConfig($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