La grid del DHTMLX es ampliamente utilizada en muchos procesos sobre todo en los formularios con esquema de tablas, también se utilizan en muchos reportes para consolidar información plana.
GeneralGrid
Objeto para manipular la grid
Simplemente es una variable global que va a manejar la interacción y la lógica relacionada con la grid, usualmente se declara con el mismo id que se le puso a la tabla en el HTML o al Div.
var gElementos = null;
Objeto de configuración
Este objeto es de los más importantes a la hora de trabajar con las grids, ya que contiene las definiciones principales, el ancho de las columnas, los encabezados, los tipos de datos, etc. Usualmente, el objeto se declara con el mismo nombre de la grid, anteponiendo la palabra cf
var cfgElementos =
{
id: 'gElementos'
, imagePath: '../dhx_v36_130619/dhtmlxGrid/codebase/imgs/', skin: 'dhx_skyblue'
, enableAutoWidth: { mode: true, maxLimit: 930, minLimit: 910 }
, enableAutoHeight: { mode: true, maxHeight: 500, countFullHeight: false }
, enableEditEvents: { click: true, dblclick: true, f2Key: true }
, header: 'No,Tipo,Elemento,Codigo,Cantidad,Unidad,Valor Unitario,Valor Total,X,CantDisponible'
, initWidths: '40,150,200,120,70,80,90,90,50,50'
, colTypes: 'cntr,coro,sugerencia,ro,ed,ro,ro,ro,ro,ro'
, colAlign: 'left,left,left,left,center,center,left ,left,left,left'
, colHidden: 'false,false,false,false,false,false,false,false,false,true'
, colSorting: 'na,na,na,na,na,na,na,na,na,na'
, colValidators: ["NotEmpty", null, "NotEmpty", null, "NotEmpty", "NotEmpty", "NotEmpty", "NotEmpty", null, null]
, arrAddRow: ["", '', '', '', '', '', '', '', "<img src='../images/delete.gif' onclick='javascript:removeGridRowCell(this.parentNode);' style='cursor:pointer;float:left;'/><img src='../images/addItem.png' onclick='addFilaGridElementos(this.parentNode);' style='cursor:pointer;float:left;'/>", '']
, colIndex: { No: 0, Tipo: 1, Elemento: 2, IdElemento: 3, Cantidad: 4, Unidad: 5, ValorUnitario: 6, ValorTotal: 7, X: 8, CantDisponible: 9 }
}
Propiedad |
tipo |
Descripción |
id |
string |
Id de la tabla o div en el html |
imagePath |
string |
ruta de donde se van a tomar las imágenes e íconos para la grid |
skin |
string |
Nombre del tipo de estilo que usará la grid Skins |
enableAutoWidth.mode |
boolean |
Inidica si la grid se va a calcular el ancho automátimanete |
enableAutoWidth.maxLimit |
integer |
Número máximo en pixeles que va a tener de ancho la grid |
enableAutoWidth.minLimit |
integer |
Número mínimo en pixeles que va a tener de ancho la grid |
enableAutoHeight.mode |
boolean |
Inidica si la grid se va a calcular el alto automátimanete |
enableAutoHeight.maxLimit |
integer |
Número máximo en pixeles que va a tener de alto la grid |
enableAutoHeight.minLimit |
integer |
Número mínimo en pixeles que va a tener de alto la grid |
enableEditEvents.click |
boolean |
Indica si la grid va a tener habilitado el evento de click |
enableEditEvents.dblclick |
boolean |
Indica si la grid va a tener habilitado el evento de doble click |
enableEditEvents.f2Key |
boolean |
Indica si la grid va a tener habilitado el evento con la tecla f2 |
header |
string |
Encabezados de la grid separados por coma |
initWidths |
string |
Tamaños en pixeles de cada columna, separados por coma y en el orden de la propiedad header |
colTypes |
string |
Tipo de datos de cada columna, separados por coma y en el orden de la propiedad header Tipos |
colAlign |
string |
Alineación de cada columna, separados por coma y en el orden de la propiedad header (left, rigth, center) |
colHidden |
string |
Visualización de cada columna, separados por coma y en el orden de la propiedad header (true para ocultar, false para ver) |
colSorting |
string |
Ordenamiento de cada columna, separados por coma y en el orden de la propiedad header (str, int, na) |
colValidators |
Array |
Arreglo con la validación a aplicar, de ser en el orden de la propiedad header Tipos |
arrAddRow |
Array |
Arreglo con los datos por defecto para agregar una nueva fila, debe tener el mismo número de columnas de la grid |
colIndex |
Object |
Objeto que da claridad sobre el indice de las columnas a que hacer referencia, sirve para no quemar el indice en el código |
Inicialización
La grid del DHTMLX tiene varias formas de inicializarse, nosotros usamos 2, mediante una tabla html ya creada o mediante un Div. El objeto inicializado se guarda en una variable global, adicional se debe crear una función de inicialización. Para simplificar este tema, se debe tener listo el objeto de configuración que será explicado más adelante.
<!-- Estructura de la tabla para inicializarse mediante una tabla -->
<table id="gElementos">
<tr>
<th>No.</th>
<th>Tipo</th>
<th>Elemento</th>
<th>Código</th>
<th>Cantidad</th>
<th>Unidad</th>
<th>Valor unitario</th>
<th>Valor Total</th>
<th>X</th>
<th>Cant</th>
</tr>
</table>
<!-- Estructura de la tabla para inicializarse mediante una tabla -->
<div id="gElementos"></div>
//Inicialización desde una tabla
var gElementos = null;
var cfgElementos = {
//....
};
function initGElementos() {
gElementos = new dhtmlXGridFromTable(cfgElementos.id);
setGridConfig(gElementos, cfgElementos);
setGridColWidth(gElementos, cfgElementos.initWidths);
}
//Inicialización desde un div
function initGElementos() {
gElementos = new dhtmlXGridObject(cfgElementos.id);
setGridConfig(gElementos, cfgElementos);
setGridColWidth(gElementos, cfgElementos.initWidths);
gElementos.init();
}
Eventos
La grid del DHTMLX tiene muchos eventos que se pueden atachar y controlar el flujo de la información, usualmente se agregan en la función de inicialización para tener el código claro y organizado.
Para tener una referencia completa de los eventos, revisar la documentación Eventos dhtmlx Grid
function initGElementos() {
//....
gElementos.attachEvent("onEditCell", function(stage, rId, cInd, nValue, oValue){
});
gElementos.attachEvent("onValidationError", function (id, index, value, rule) {
gElementos.setSizes();
});
}