En términos muy simples, sólo pensar en tres capas:
Grid
----
DataView
----
Data
En la parte inferior que tienen los datos en bruto. Esto es solo una matriz simple. Cada elemento en el conjunto representa una fila de datos (que se mostrará como una fila en la cuadrícula).
El DataView lee el conjunto de datos y lo pone a disposición de la cuadrícula al exponer un par de métodos estándar. De esta forma, cuando la cuadrícula desea obtener datos con fines de visualización, solo habla con la vista de datos a través de uno de los métodos estándar.
The Grid es el componente de visualización. Su única responsabilidad es presentar el código HTML necesario para mostrar la salida deseada en la pantalla.
La cuadrícula nunca accede directamente a los datos. Solo habla con la vista de datos. Esto permite que la vista de datos realice trucos al devolver los datos a la grilla, como la entrega de filas "fantasmas" usadas para representar encabezados de grupo.
Si le interesa, el siguiente ejemplo es simplemente el ejemplo más simple que se le puede ocurrir que utiliza una vista de datos con SlickGrid.
var data = [
{ title: "Primer", rating: "A" },
{ title: "Matrix", rating: "B" },
{ title: "Transformers", rating: "C" },
];
var columns = [
{ id: "title", name: "Title", field: "title" },
{ id: "rating", name: "Rating", field: "rating" }
];
var options = {
enableColumnReorder: false // ... whatever grid options you need
};
var dataView = new Slick.Data.DataView();
var grid = new Slick.Grid("#myGrid", dataView, columns, options);
// wire up model events to drive the grid
dataView.onRowCountChanged.subscribe(function (e, args) {
grid.updateRowCount();
grid.render();
});
dataView.onRowsChanged.subscribe(function (e, args) {
grid.invalidateRows(args.rows);
grid.render();
});
// Feed the data into the dataview
dataView.setItems(data);
Estoy tratando de decidir si escribir una implementación de DataView personalizada o un modelo separado que proporcione E/S al DataView predeterminado. ¿Alguien ha construido o visto un DataView personalizado? Nunca he visto uno, y me gustaría hacer una lectura. – SimplGy
datos necesita una identificación o de lo contrario arrojará un error – Ammon