我有一个包含许多列的kendo UI网格。可以通过水平滚动查看溢出的列。但是,如果你
1)滚动到最初未显示的列
2)对该列进行过滤,使得没有行匹配过滤条件
网格将不再允许水平滚动。已应用过滤器的列无法清除。
如何在过滤后显示水平滚动条?
这是一个jsfiddle,你可以看到问题
以下是代码:
var dataItem = {};
var columns = [];
for (var i = 0; i < 20; i++) {
dataItem['col' + i] = i;
columns.push( {
field: 'col' + i,
width: 80,
filterable: true,
type: 'number'
} );
}
$("#grid").kendoGrid({
scrollable:true,
columns: columns,
filterable: true,
dataSource: [dataItem]
});
例如,转到第18列并过滤等于20以查看问题。
答案 0 :(得分:2)
基于Trey Gramman添加 clear filter 按钮的方法:
$("#grid").kendoGrid({
scrollable: true,
columns : columns,
filterable: true,
toolbar : [
{
name : "clean_filter",
imageClass: "k-icon k-i-funnel-clear",
text : "clean filter"
}
],
dataSource: [dataItem]
});
$(".k-grid-clean_filter", "#grid").on("click", function (e) {
$("#grid").data("kendoGrid").dataSource.filter({});
});
看到它正在运行here。
它不能解决滚动标题的问题,但至少可以让你继续(如果找不到更好的东西)。
答案 1 :(得分:2)
我有同样的问题,我解决了它在网格中添加一个空行 代码:
var dataItem = {};
var columns = [];
for (var i = 0; i < 20; i++) {
dataItem['col' + i] = i;
columns.push( {
field: 'col' + i,
width: 80,
filterable: true,
type: 'number'
} );
}
$("#grid").kendoGrid({
scrollable:true,
columns: columns,
filterable: true,
dataSource: [dataItem],
dataBound: function(e) {
if(this.dataSource.view().length == 0) {
var colspan = this.content.find("table col").length;
this.content.find("table").append("<tr><td colspan=" + colspan + "></td></tr>");
}
$("#grid").find(".k-grid-footer-wrap").scrollLeft($("#grid").find(".k-grid-content").scrollLeft());
this.content.bind('scroll', function () {
$("#grid").find(".k-grid-footer-wrap").scrollLeft(this.scrollLeft);
});
}
})
答案 2 :(得分:1)
有趣的delima。我认为你最简单的答案是在网格旁边添加一个按钮来“刷新”网格。以下javascript将导致刷新。
function LoadAllPositions() {
$("#grid").data("kendoGrid").dataSource.read();
}