Grid

De CidesaWiki

(Diferencias entre revisiones)
Saltar a navegación, buscar
 
(3 ediciones intermedias no se muestran.)
Línea 9: Línea 9:
Luego creamos el arreglo de objetos resultante de nuestra consulta sql, esto estaría 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();  
-
$c->add(CiasiiniPeer::CODPRE,str_pad($this->ciasiini->getCodpre(),32,' '));
+
$c->add(ForpryorgpubPeer::CODPRO,$this->fordefpry->getCodpro());
-
$c->add(CiasiiniPeer::PERPRE,'00',Criteria::NOT_EQUAL);
+
$per = ForpryorgpubPeer::doSelect($c);
-
$c->addAscendingOrderByColumn(CiasiiniPeer::PERPRE);
+
-
$this->per = CiasiiniPeer::doSelect($c);
+
</pre>
</pre>
Línea 19: Línea 17:
--------------------------------------------------------------
--------------------------------------------------------------
-
Luego en el edit_form de la forma en la que estamos trabajando, colocar arriba:
+
Luego en el editSuccess de la forma en la que estamos trabajando, agregar el helper "Grid":
<pre>
<pre>
-
<?php use_helper('Grid'); ?>
+
<?php use_helper('Object', 'Validation', 'ObjectAdmin', 'I18N', 'Date', 'tabs', 'Javascript', 'PopUp', 'Grid') ?>
</pre>
</pre>
--------------------------------------------------------------
--------------------------------------------------------------
Línea 35: Línea 33:
</pre>
</pre>
----------------------------------------------------------------
----------------------------------------------------------------
-
Hay 2 formas de pasar los parámetros de configuración al Grid:
 
-
* Arreglos
+
Pasar al _edit_form.php la variable $obj a través del editSuccess de la siguiente forma:
-
<pre>
+
-
$filas=17;
+
<pre>
-
$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";
+
<?php include_partial('fordefproyecto/edit_form', array('fordefpry' => $fordefpry, 'labels' => $labels, 'obj' => $obj)) ?>
-
$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');
+
</pre>
</pre>
-
* Objetos de Configuración
+
La configuración al Grid, se tiene que agregar en el action.class.php:
-
<pre>
 
-
$mascaraubicacion=$this->mascaraubicacion;
+
<pre>
-
// $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;
+
  public function configGrid()
-
$col6->setTitulo('Exi. Máxima');
+
  {
-
$col6->setNombreCampo('Eximax');
+
    $c = new Criteria();  
-
       
+
    $c->add(ForpryorgpubPeer::CODPRO,$this->fordefpry->getCodpro());
-
$col7 = clone $col5;
+
    $per = ForpryorgpubPeer::doSelect($c);
-
$col7->setTitulo('Exi. Actual');
+
     
-
$col7->setNombreCampo('Exiact');
+
    $opciones = new OpcionesGrid();
-
$col7->setEsTotal(true,'caregart_exitot');
+
    $opciones->setEliminar(true);
-
       
+
    $opciones->setTabla('forpryorgpub');
-
$col8 = clone $col5;
+
    $opciones->setAnchoGrid(500);       
-
$col8->setTitulo('Reorden');
+
    $opciones->setTitulo('');  
-
$col8->setNombreCampo('Ptoreo');
+
    $opciones->setHTMLTotalFilas(' ');
-
       
+
     
-
// Se guardan las columnas en el objetos de opciones       
+
    $col1 = new Columna('Código');
-
$opciones->addColumna($col1);
+
    $col1->setTipo(Columna::TEXTO);
-
$opciones->addColumna($col2);
+
    $col1->setEsGrabable(true);
-
$opciones->addColumna($col3);
+
    $col1->setAlineacionObjeto(Columna::CENTRO);
-
$opciones->addColumna($col4);
+
    $col1->setAlineacionContenido(Columna::CENTRO);
-
$opciones->addColumna($col5);
+
    $col1->setNombreCampo('codorg');
-
$opciones->addColumna($col6);
+
    $col1->setCatalogo('fordeforgpub','sf_admin_edit_form',array(2));
-
$opciones->addColumna($col7);
+
    $col1->setAjax('fordefproyecto',1,2);     
-
$opciones->addColumna($col8);
+
         
-
// Ee genera el arreglo de opciones necesario para generar el grid
+
    $col2 = new Columna('Descripción');
-
$this->obj = $opciones->getConfig($per);  
+
    $col2->setTipo(Columna::TEXTO);
 +
    $col2->setAlineacionObjeto(Columna::IZQUIERDA);
 +
    $col2->setAlineacionContenido(Columna::IZQUIERDA);
 +
    $col2->setNombreCampo('nomorg');
 +
    $col2->setHTML('type="text" size="25" disabled=true');        
 +
   
 +
    $opciones->addColumna($col1);
 +
    $opciones->addColumna($col2);  
 +
     
 +
    $this->obj = $opciones->getConfig($per);
 +
 
 +
  }
</pre>
</pre>

Última versión de 14:12 29 jun 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(ForpryorgpubPeer::CODPRO,$this->fordefpry->getCodpro());
$per = ForpryorgpubPeer::doSelect($c);

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


Luego en el editSuccess de la forma en la que estamos trabajando, agregar el helper "Grid":

<?php use_helper('Object', 'Validation', 'ObjectAdmin', 'I18N', 'Date', 'tabs', 'Javascript', 'PopUp', 'Grid') ?>

Hacemos el llamado del helper donde queramos colocarlo. En este ejemplo seria en _edit_form.php luego de los objetos principales y antes de los botones de guardar los datos.

<form name="form1" id="form1">
<?
echo grid_tag($obj);
?>
</form>

Pasar al _edit_form.php la variable $obj a través del editSuccess de la siguiente forma:

                                                                                                              |
                                                                                                        --------------
                                                                                                        |            |
<?php include_partial('fordefproyecto/edit_form', array('fordefpry' => $fordefpry, 'labels' => $labels, 'obj' => $obj)) ?>

La configuración al Grid, se tiene que agregar en el action.class.php:



  public function configGrid()
  {
    $c = new Criteria();    
    $c->add(ForpryorgpubPeer::CODPRO,$this->fordefpry->getCodpro());
    $per = ForpryorgpubPeer::doSelect($c);
    	  
    $opciones = new OpcionesGrid();
    $opciones->setEliminar(true);
    $opciones->setTabla('forpryorgpub');
    $opciones->setAnchoGrid(500);        
    $opciones->setTitulo('');    
    $opciones->setHTMLTotalFilas(' ');
       
    $col1 = new Columna('Código');
    $col1->setTipo(Columna::TEXTO);
    $col1->setEsGrabable(true);
    $col1->setAlineacionObjeto(Columna::CENTRO);
    $col1->setAlineacionContenido(Columna::CENTRO);
    $col1->setNombreCampo('codorg');
    $col1->setCatalogo('fordeforgpub','sf_admin_edit_form',array(2));
    $col1->setAjax('fordefproyecto',1,2);      
           
    $col2 = new Columna('Descripción');
    $col2->setTipo(Columna::TEXTO);
    $col2->setAlineacionObjeto(Columna::IZQUIERDA);
    $col2->setAlineacionContenido(Columna::IZQUIERDA);
    $col2->setNombreCampo('nomorg');
    $col2->setHTML('type="text" size="25" disabled=true');         
    
    $opciones->addColumna($col1);
    $opciones->addColumna($col2);    
    	  
    $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.

Si desea obtener mas información sobre los objetos de configuración para el grid puede ir al siguiente enlace Objetos Configuración Grid

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas