一次隐藏/显示剑道网格​​中的所有列

时间:2016-05-20 12:35:13

标签: javascript jquery kendo-ui kendo-grid var

我在剑道网格中有120列,并选择全部并取消选择所有功能。 如果我选择每个循环,则需要花费大量时间来隐藏或显示所有列。 有没有办法在一次通话中隐藏/显示所有列。

只想提一下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);
}

1 个答案:

答案 0 :(得分:1)

我已经为您创建了这种场景的演示:Show/Hide all columns

这使用网格的内置显示/隐藏功能,并使用比你大约130列的网格,它平均在2秒内完成操作。我添加了一个"计时器"所以你可以看到它从列的循环到操作的结束需要多长时间。

 $("#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秒以上足够快,并且感觉"关于这个列数的权利取决于你在当前页面上有多少行,它也必须隐藏所有这些元素。