Hacer que el grid mantenga los datos escritos luego del submit

De CidesaWiki

(Diferencias entre revisiones)
Saltar a navegación, buscar
(New page: Para hacer que el grid mantenag los datos luego del submit se debe configurar el validateEdit de la siguiente forma <pre> public function validateEdit() { $resp=-1; if($t...)
 
(5 ediciones intermedias no se muestran.)
Línea 1: Línea 1:
 +
 +
 +
 +
'''NOTA: A partir de la revisión 3752 ya no hay que hacer nada para que el grid mantenga los datos de la vista'''
 +
 +
 +
 +
 +
 +
Para hacer que el grid mantenag los datos luego del submit se debe configurar el validateEdit de la siguiente forma
Para hacer que el grid mantenag los datos luego del submit se debe configurar el validateEdit de la siguiente forma
Línea 56: Línea 66:
<pre>
<pre>
 +
  public function configGrid($reg = array(),$regelim = array()){ // [1]
 +
 +
      $this->regelim = $regelim; // [2]
 +
   
 +
   
 +
      if(!count($reg)>0){ // [3]
 +
  $c = new Criteria();
 +
  $c->add(CaartaocPeer::AJUOC ,$this->caajuoc->getAjuoc());
 +
  // TODO: Ampliar el Where para colocar la siguiente restricción que tiene el
 +
  // Código de VB:
 +
  // CDbl(ObtenerValorNumericoReal(CAArtOrd!CanOrd) - ObtenerValorNumericoReal(CAArtOrd!CanAju)) <> CDbl(ObtenerValorNumericoReal(CAArtOrd!CanRec))
 +
      $reg = CaartaocPeer::doSelect($c);
 +
      }
 +
     
 +
      $this->obj = Herramientas::getConfigGrid(sfConfig::get('sf_app_module_dir').'/almajuoc/'.sfConfig::get('sf_app_module_config_dir_name').'/grid_caartaoc',$reg);
 +
     
 +
   
 +
  }
 +
 +
</pre>
 +
 +
* [1]. Se deben pasar como parámetros opcionales los registros a actualizar y un arreglo de los registros marcados como eliminados. Estos datos vienen de la función "CargarDatosGrid".
 +
* [2]. la variable $this->regelim es pasada como un parámetro opcional al gridhelper. Esta variable contiene los registros marcados a ser eliminados. El gridhelper ya esta configurado para marcarlos de neuvo en la vista y no mostrarlos.
 +
* [3]. con este "if" se verifica que si la variable $reg fue pasada como parámetro a la función, no debo cargar los datos de la base de datos, ya que no mostraría los registros nuevos que pueda traer de la vista.
 +
 +
Por último debes llamar al gridhelper de la siguiente forma:
 +
 +
<pre>
 +
echo grid_tag($obj,$regelim);
</pre>
</pre>

Última versión de 20:14 21 sep 2007


NOTA: A partir de la revisión 3752 ya no hay que hacer nada para que el grid mantenga los datos de la vista




Para hacer que el grid mantenag los datos luego del submit se debe configurar el validateEdit de la siguiente forma



  public function validateEdit()
  {
    $resp=-1;


    if($this->getRequest()->getMethod() == sfRequest::POST){
      

      $this->caajuoc = $this->getCaajuocOrCreate();
      
      $this->updateCaajuocFromRequest();
      
      $this->configGrid(); // [1]
      
      $grid = Herramientas::CargarDatosGrid($this,$this->obj); // [2]
    
      $this->configGrid($grid[0],$grid[1]); // [3]
      
      
      // Aqui van los llamados a los métodos de las clases del
      // negocio para validar los datos.
      // Los resultados de cada llamado deben ser analizados por ejemplo:

      $resp = Compras::validarAlmajuoc($this->caajuoc,$grid);

      // al final $resp es analizada en base al código que retorna
      // Todas las funciones de validación y procesos del negocio
      // deben retornar códigos >= -1. Estos código serám buscados en 
      // el archivo errors.yml en la función handleErrorEdit()

      if($resp!=-1){
        $this->coderror = $resp; 
        return false;
      } else return true;

    }else return true;
  
  }

Luego de esto ya el objeto $this->obj contiene los registros que realmente van a ser mostrado. Cabe desatacar que los registros nuevos se mostrarán y los eliminados no, esto ya actualmente esta validado.

Por otro lado la función "configGrid" sufre una modificación que debe ser incluida:


  public function configGrid($reg = array(),$regelim = array()){ // [1]

      $this->regelim = $regelim; // [2]
    
     
      if(!count($reg)>0){ // [3]
		  $c = new Criteria();
		  $c->add(CaartaocPeer::AJUOC ,$this->caajuoc->getAjuoc());
		  // TODO: Ampliar el Where para colocar la siguiente restricción que tiene el 
		  // Código de VB:
		  // CDbl(ObtenerValorNumericoReal(CAArtOrd!CanOrd) - ObtenerValorNumericoReal(CAArtOrd!CanAju)) <> CDbl(ObtenerValorNumericoReal(CAArtOrd!CanRec))
	      $reg = CaartaocPeer::doSelect($c);
      }
      
      $this->obj = Herramientas::getConfigGrid(sfConfig::get('sf_app_module_dir').'/almajuoc/'.sfConfig::get('sf_app_module_config_dir_name').'/grid_caartaoc',$reg); 
      
    
  } 

Por último debes llamar al gridhelper de la siguiente forma:


echo grid_tag($obj,$regelim);

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas