Obtenir des données filtrées de Dataview dans Slickgrid

J’utilise la propriété dataView de la grid lisse pour définir les données dans la grid lisse. J’ai appliqué le filtre de rangée d’en-tête. Je veux récupérer des données filtrées sur un bouton externe. Je peux obtenir toutes les données en utilisant dataview.getItems() , mais lorsque je filtre les données sur la ligne d’en-tête et que j’utilise la même propriété dataview.getItems() elle renvoie toutes les lignes et non les données de la ligne de filtre.

 function bindSlickGrid(myOBJ) { var options = { enableCellNavigation: true, enableColumnReorder: true, multiColumnSort: true, showHeaderRow: true, headerRowHeight: 30 , explicitInitialization: true }; dataView = new Slick.Data.DataView(); grid = new Slick.Grid("#myGrid", dataView, myColList, options); dataView.onRowCountChanged.subscribe(function (e, args) { grid.updateRowCount(); grid.render(); }); dataView.onRowsChanged.subscribe(function (e, args) { grid.invalidateRows(args.rows); grid.render(); }); $(grid.getHeaderRow()).delegate(":input", "change keyup", function (e) { var columnId = $(this).data("columnId"); if (columnId != null) { columnFilters[columnId] = $.sortingm($(this).val()); dataView.refresh(); } }); grid.onHeaderRowCellRendered.subscribe(function (e, args) { $(args.node).empty(); $("") .data("columnId", args.column.id) .val(columnFilters[args.column.id]) .appendTo(args.node); }); grid.init(); dataView.beginUpdate(); dataView.setItems(myOBJ); dataView.setFilter(function (item) { for (var columnId in columnFilters) { if (columnId !== undefined && columnFilters[columnId] !== "") { var c = grid.getColumns()[grid.getColumnIndex(columnId)]; if (item[c.field] != columnFilters[columnId]) { return false; } } } return true; }); dataView.endUpdate(); //Sort data grid.onSort.subscribe(function (e, args) { var cols = args.sortCols; myOBJ.sort(function (dataRow1, dataRow2) { for (var i = 0, l = cols.length; i  value2 ? 1 : -1)) * sign; if (result != 0) { return result; } } return 0; }); grid.invalidate(); grid.render(); **console.log(dataview.getItems() )** }); 

Cet article est vieux, mais je cherchais aussi une solution comme celle-ci.

Cependant, presque tous les messages que j’ai rencontrés m’ont également signalé votre solution.

Je l’ai fait fonctionner en ajoutant un getter pour les lignes filtrées:

 function getFilteredItems(){ return filteredItems; } 

theres une variable appelée filterItems dans l’affichage de données. n’oubliez pas d’append également

"getFilteredItems" : getFilteredItems

sous

 $.extend(this, { ...