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();
json jquery filter dataview slickgrid
Shailesh
source share