Używanie Slick.Dataview powielałoby tylko niektóre funkcje (sortowanie, filtrowanie, CRUD ..) swoich zbiorów, ale powinieneś to sprawdzić, aby zobaczyć, jak współdziała z Slick.Grid.
Jeśli spojrzeć na kod Slick.Grid widać, że jest to tylko 3 funkcje DataView .getLength(), .getItem() i .getItemMetadata() i ostatni nie jest obowiązkowe do wdrożenia. So Slick.Grid jest w zasadzie komponentem "Widok" tylko czytanie "Dane" (Dataview), ale gdzie jest "kontroler"?
Dobrze jesteś jej wdrożenia i rzeczywiście można znaleźć jeden przykład w „SlickGrid Example 4”.
Najważniejszą częścią tego przykładu jest w tym fragmencie:
// 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();
});
tego 2 wydarzeń (onRowCountChanged, onRowsChanged) dostanie wystrzelonych podczas dodawania, usuwania aktualizacji wierszy w DataView i korzystania funkcjonuje jesteś przejazdem informacje do siatki.
Zatem podstawową ideą jest, aby zrobić to samo dla swojej Mongo.Collection iw miarę widzę Mongo.Cursor ma .observeChanges() który jest nieco podobny do .onRowsChanged
Zamówienie SlickGrid API w źródle na końcu dokumentu.
obsługiwać Siatka aktualizuje skutecznie próbować za pomocą różnych metod Unieważnienie .invalidate (ALL) row (s)() a także .updateRow() i .updateCell() nawet bardziej precyzyjną kontrolę.
Są to głównie metody obsługujące przejrzeć aktualizacje:
"render": render,
"invalidate": invalidate,
"invalidateRow": invalidateRow,
"invalidateRows": invalidateRows,
"invalidateAllRows": invalidateAllRows,
"updateCell": updateCell,
"updateRow": updateRow,
"getViewport": getVisibleRange,
"getRenderedRange": getRenderedRange,
"resizeCanvas": resizeCanvas,
"updateRowCount": updateRowCount,
"scrollRowIntoView": scrollRowIntoView,
"scrollRowToTop": scrollRowToTop,
"scrollCellIntoView": scrollCellIntoView,
"getCanvasNode": getCanvasNode,
"focus": setFocus,
Jeśli potrzebujesz interakcji użytkownika z wami Siatka subskrypcji zdarzeń i aktualizować swoją kolekcję odpowiednio.
"onScroll": new Slick.Event(),
"onSort": new Slick.Event(),
"onHeaderMouseEnter": new Slick.Event(),
"onHeaderMouseLeave": new Slick.Event(),
"onHeaderContextMenu": new Slick.Event(),
"onHeaderClick": new Slick.Event(),
"onMouseEnter": new Slick.Event(),
"onMouseLeave": new Slick.Event(),
"onClick": new Slick.Event(),
"onDblClick": new Slick.Event(),
"onContextMenu": new Slick.Event(),
"onKeyDown": new Slick.Event(),
"onAddNewRow": new Slick.Event(),
"onValidationError": new Slick.Event(),
"onViewportChanged": new Slick.Event(),
"onColumnsReordered": new Slick.Event(),
"onColumnsResized": new Slick.Event(),
"onCellChange": new Slick.Event(),
"onActiveCellChanged": new Slick.Event(),
"onActiveCellPositionChanged": new Slick.Event(),
"onDragInit": new Slick.Event(),
"onDragStart": new Slick.Event(),
"onDrag": new Slick.Event(),
"onDragEnd": new Slick.Event(),
"onSelectedRowsChanged": new Slick.Event(),