Jquery 从Slickgrid中的Dataview获取筛选数据
我正在使用slick grid的dataView属性在slick grid中设置数据。我应用了标题行过滤器。我想在外部按钮点击时获取过滤数据。我可以使用dataview.getItems获取所有数据,但当我筛选标题行上的数据并使用相同的属性dataview.getItems时,它返回所有行,而不是筛选行数据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
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好的,我正在编辑问题我在这里找到了解决方案我的问题已经解决了,但如果有人能提供更多更好的解决方案,我将不胜感激