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.