SlickGrid ce qui est une Vue de Données?

J'ai commencé à utiliser SlickGrid et j'ai été confus au sujet de la différence entre la vue de données et la grille (avec édition activée). Je n'ai pas trouvé dans le docs une discussion sur la vue des données, bien qu'elle y ait été mentionnée.

Merci de m'éclairer.

17
demandé sur madth3 2012-08-26 12:26:15

3 réponses

En termes très simples, il suffit de penser de trois couches:

  Grid
  ----
DataView
  ----
  Data

En bas, vous avez les données brutes. C'est juste un bon vieux tableau. Chaque élément du tableau représente une ligne de données (à être affiché comme une ligne dans la grille).

la DataView lit le tableau de données et le rend disponible à la grille en exposant quelques méthodes standard. De cette façon, lorsque la grille veut obtenir des données à des fins d'affichage, elle ne fait que parler à la dataview via l'un des standards méthode.

la grille est le composant display. Sa seule responsabilité est de rendre le code HTML nécessaire pour afficher la sortie désirée sur l'écran.

la grille n'accède jamais directement aux données. Il ne parle jamais à la dataview. Cela permet à dataview d'exécuter des astuces lors du retour des données dans la grille, telles que la livraison de lignes "fantômes" utilisées pour représenter les en-têtes de groupe.

Si vous êtes intéressé, l'exemple ci-dessous est à peu près le plus simple exemple vous pouvez trouver qui utilise un dataview avec 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);
27
répondu njr101 2012-08-29 00:43:39

DataView est une abstraction au-dessus de votre source de données. Si toutes les données sont disponibles sur le client (c.-à-d. Dans un tableau Javascript), DataView peut fournir de nombreuses fonctionnalités utiles que la grille elle-même ne possède pas. (Ce fait que la grille ne dispose pas de ces caractéristiques est par conception - SlickGrid tente de garder le noyau mince et simple tout en encourageant la conception modulaire et l'abstraction de données dans son API.)

DataView fonctionne en prenant vos données et en agissant comme un fournisseur de données que vous pouvez passez à SlickGrid au lieu de votre tableau de données original. Par exemple, si vous faites DataView group data, Cela fait penser à la grille que les lignes "group" ne sont que des éléments de données réguliers, donc la grille n'a pas besoin d'en être consciente. DataView indique à la grille que ces éléments ont un affichage et un comportement personnalisés et fournit des implémentations des deux. Vous transférez ensuite les événements onRowCountChanged et onRowsChanged de DataView pour mettre à jour la grille et voila.

Voici une liste approximative de fonctionnalités DataView ajoute à la grille:

  • la Pagination.
  • Tri.
  • recherche.
  • Regroupement avec les totaux.
  • groupes D'expansion / d'effondrement.
10
répondu Tin 2012-08-28 02:25:58

DataView permet de trier et filtrer les données sans les modifier ni la grille. Vous pouvez le considérer comme une superposition sur le dessus de la grille qui fournit des fonctions liées à la vue-dans certains cas améliore ces fonctions.

j'Espère que ça aide!

1
répondu ganeshk 2012-08-27 13:40:46