Jquery 从Slickgrid中的Dataview获取筛选数据

Jquery 从Slickgrid中的Dataview获取筛选数据,jquery,json,filter,slickgrid,dataview,Jquery,Json,Filter,Slickgrid,Dataview,我正在使用slick grid的dataView属性在slick grid中设置数据。我应用了标题行过滤器。我想在外部按钮点击时获取过滤数据。我可以使用dataview.getItems获取所有数据,但当我筛选标题行上的数据并使用相同的属性dataview.getItems时,它返回所有行,而不是筛选行数据 function bindSlickGrid(myOBJ) { var options = { enableCellNavigati

我正在使用slick grid的dataView属性在slick grid中设置数据。我应用了标题行过滤器。我想在外部按钮点击时获取过滤数据。我可以使用dataview.getItems获取所有数据,但当我筛选标题行上的数据并使用相同的属性dataview.getItems时,它返回所有行,而不是筛选行数据

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() )**
            });

这篇文章很旧,但我也在寻找这样的解决方案

然而,我看到的几乎每一篇帖子都指出了你的解决方案

我通过为过滤的行添加一个getter使其工作:

function getFilteredItems(){
    return filteredItems;
}
dataview中有一个名为filteredItems的变量。 记住还要加上

getFilteredItems:getFilteredItems

$.extend(this, { ...

这篇文章很旧,但我也在寻找这样的解决方案

然而,我看到的几乎每一篇帖子都指出了你的解决方案

我通过为过滤的行添加一个getter使其工作:

function getFilteredItems(){
    return filteredItems;
}
dataview中有一个名为filteredItems的变量。 记住还要加上

getFilteredItems:getFilteredItems

$.extend(this, { ...

你试过什么吗?请提供html,JScript好的,我正在编辑问题我在这里找到了解决方案我的问题已经解决了,但我很感激如果有人能提供更多更好的解决方案,你试过什么吗?请提供html、JScript好的,我正在编辑问题我在这里找到了解决方案我的问题已经解决了,但如果有人能提供更多更好的解决方案,我将不胜感激