Hacer que el grid mantenga los datos escritos luego del submit

De CidesaWiki

(Diferencias entre revisiones)
Saltar a navegación, buscar
Línea 69: Línea 69:
       }
       }
        
        
-
       $this->obj = Herramientas::getConfigGrid(sfConfig::get('sf_app_module_dir').'/almajuoc/'.sfConfig::get('sf_app_module_config_dir_name').'/grid_caartaoc',$reg); // [4]
+
       $this->obj = Herramientas::getConfigGrid(sfConfig::get('sf_app_module_dir').'/almajuoc/'.sfConfig::get('sf_app_module_config_dir_name').'/grid_caartaoc',$reg);  
        
        
      
      
Línea 79: Línea 79:
* [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.
* [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.
* [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.
-
* [4]. se pasa
+
 
 +
Por último debes llamar al gridhelper de la siguiente forma:
 +
 
 +
<pre>
 +
 
 +
echo grid_tag($obj,$regelim);
 +
 
 +
</pre>

Revisión de 21:52 23 jul 2007

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