Get data from Dataview in Slickgrid

I use the dataView property of the slice grid to set the data to a smooth mesh grid. I applied a header line filter. I want to get filtered data when I click on an external button. I can get all the data using dataview.getItems() , but when I filter the data in the title bar and use the same dataview.getItems() property, it returns all the rows, not the filter row data.

 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] = $.trim($(this).val()); dataView.refresh(); } }); grid.onHeaderRowCellRendered.subscribe(function (e, args) { $(args.node).empty(); $("<input type='text'>") .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 < l; i++) { var field = cols[i].sortCol.field; var sign = cols[i].sortAsc ? 1 : -1; var value1 = dataRow1[field], value2 = dataRow2[field]; var result = (value1 == value2 ? 0 : (value1 > value2 ? 1 : -1)) * sign; if (result != 0) { return result; } } return 0; }); grid.invalidate(); grid.render(); **console.log(dataview.getItems() )** }); 
+1
json jquery filter dataview slickgrid
source share
1 answer

This post is old, but I was also looking for such a solution.

However, almost every message I came across indicated your decision.

I got it to work by adding a getter for filtered strings:

 function getFilteredItems(){ return filteredItems; } 

theres a variable called filterItems in the dataview. don't forget to add

"getFilteredItems" : getFilteredItems

under

 $.extend(this, { ... 
+4
source share

All Articles