Hacer que el grid mantenga los datos escritos luego del submit

De CidesaWiki

Saltar a navegación, buscar


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