jueves, 18 de abril de 2013

El grid - parte 2

Hola de nuevo.

He seguido trabajando en el grid, pero por el momento llegaré hasta la la parte de los filtros, el ordenamiento de datos, celdas tipo link, y tipo barra de progreso. Quedo muy bien y fácil de usar. Se le puede especificar si se requiere que sea cargada mediante Ajax, o mediante la forma tradicional de parámetros por el método get.

El código para utilizar el grid queda como el siguiente:

class indexModel extends model{
 public $dataGrid;
 
 function getDataGrid($args=array()){
  /*Extraemos los argumentos en variables*/
  extract($args);
  /*Si el argumento $page no viene declarado, dejamos por defecto que página a mostrar sea la primera*/
  if(!isset($page)){
   $page=1;
  }
  
  /*Declaramos el tipo del objeto*/
  $this->dataGrid=new datagrid(array("id"=>"prueba","title"=>"Prueba de grid"));
  
  /*Seteamos si permitiremos filtros o no en las columnas*/
  $this->dataGrid->allowFilters(true);
  
  /*Seteamos si el grid sera llenado por Ajax. 
   * Esto ejecutará una funcion dentro del modelo que se debe declarar y cuyo nombre
   * debe ser el id que se definió anteriormente mas las palabras 'DataGridCallback'*/
  $this->dataGrid->allowAjaxCall(true);
  
  /*Setea los campos del grid*/
  $this->dataGrid->setFields("id,txt_desc,fecha,numero,porcentaje");
  /*Setea los tipos de cada campo en el orden que se declararon anteriormente*/
  $this->dataGrid->setTypes("number,string,date,number,progressbar");
  /*Vinculoa una accion a una de las columnas, en este caso un hipervinculo*/
  $this->dataGrid->bindFieldTypeParameter("id", "link", "?c=admin/dhdh&other=#fecha#&other2=#porcentaje#");
  /*Setea que el grid debe buscar los datos en la base de datos*/
  $this->dataGrid->getFromTable("grid_test",$page,"","ID, Nombre, Fecha, Número,Porcentaje",$filter,$order);
 }
 
 /*Funcion que se ejecutará cuando haya un llamado Ajax*/
 function pruebaDataGridCallback($args=array()){
  extract($args);
  /*Declaramos el tipo del objeto*/
  $dataGrid=new datagrid(array("id"=>"prueba"));
  /*Obtenemos los datos. El objeto detectará que el llamado actual es un llamado Ajax, y devolverá sólamente los datos,
   * sin el resto del código DOM*/
  $dataGrid->getFromTable("grid_test",$page,"","ID, Nombre, Fecha, Número,Porcentaje",$filter,$order);
 }
}
Lo que nos renderiza es algo como esto:
Un grid sencillo, fácil de usar.

Por el momento hasta aquí llegaré con el grid, ahora debo seguir con otros controles como los radio button, los checkbox y voy a hacer un objeto para subir archivos que será super fácil de usar. Hasta pronto.