Hide/Show kendo 网格中的所有列一次性完成
Hide/Show all columns in kendo grid in one go
我在 kendo 网格中有 120 列,并且具有 select 全部和 deselect 全部功能。
如果我使用每个循环,隐藏或显示所有列将花费大量时间。
有什么方法可以 hide/show 一次调用中的所有列。
只想提一下 kendo showColumn/hideColumn 很慢。
$(".some-class").each(function(){
var field1 = $(this).data("field");
input.find('label').addClass('enableCheck');
input.find('label').removeClass('disableCheck');
$("#grid-id").data("kendoGrid").showColumn(field1);
}
好吧,我已经为您创建了这种场景的演示:Show/Hide all columns
这对网格使用了内置的 show/hide 函数,并使用比您的网格稍大的网格,平均约 130 列,它在不到 2 秒的时间内完成了操作。我添加了一个 "timer",因此您可以看到从它到达列循环到操作结束需要多长时间。
$("#clickme").on('click',function(){
var grid =$("#grid").data("kendoGrid");
var columns = grid.getOptions().columns;
var start = new Date().getTime();
columns.forEach(function(me){
if(me.hidden !== undefined && me.hidden === true)
{
grid.showColumn(me.field);
}
else
{
grid.hideColumn(me.field);
}
//console.log(me);
});
var end = new Date().getTime();
console.log(start,end, end-start);
$("#timer").text((end-start)/1000 + ' Seconds to run' );
});
所有这一切都是获取网格中的列,然后检查它当前是否隐藏(如果是,那么它将显示它,否则它将隐藏它)
这只是绑定到一个简单的按钮,您可以在网格下方单击该按钮。
对于这种类型的操作,我认为不到 2 秒的时间已经足够快了,而且 "feels" 对于这个列数来说是正确的,因为它必须隐藏所有当前页面上的行数这些元素也是如此。
我在 kendo 网格中有 120 列,并且具有 select 全部和 deselect 全部功能。 如果我使用每个循环,隐藏或显示所有列将花费大量时间。 有什么方法可以 hide/show 一次调用中的所有列。
只想提一下 kendo showColumn/hideColumn 很慢。
$(".some-class").each(function(){
var field1 = $(this).data("field");
input.find('label').addClass('enableCheck');
input.find('label').removeClass('disableCheck');
$("#grid-id").data("kendoGrid").showColumn(field1);
}
好吧,我已经为您创建了这种场景的演示:Show/Hide all columns
这对网格使用了内置的 show/hide 函数,并使用比您的网格稍大的网格,平均约 130 列,它在不到 2 秒的时间内完成了操作。我添加了一个 "timer",因此您可以看到从它到达列循环到操作结束需要多长时间。
$("#clickme").on('click',function(){
var grid =$("#grid").data("kendoGrid");
var columns = grid.getOptions().columns;
var start = new Date().getTime();
columns.forEach(function(me){
if(me.hidden !== undefined && me.hidden === true)
{
grid.showColumn(me.field);
}
else
{
grid.hideColumn(me.field);
}
//console.log(me);
});
var end = new Date().getTime();
console.log(start,end, end-start);
$("#timer").text((end-start)/1000 + ' Seconds to run' );
});
所有这一切都是获取网格中的列,然后检查它当前是否隐藏(如果是,那么它将显示它,否则它将隐藏它)
这只是绑定到一个简单的按钮,您可以在网格下方单击该按钮。
对于这种类型的操作,我认为不到 2 秒的时间已经足够快了,而且 "feels" 对于这个列数来说是正确的,因为它必须隐藏所有当前页面上的行数这些元素也是如此。