Kendo ui kendoDropDownList加载条未显示

Kendo ui kendoDropDownList加载条未显示,kendo-ui,kendo-grid,Kendo Ui,Kendo Grid,我使用dropDownList来显示一些值,以便在网格上过滤结果 我已使用“更改”事件查看何时必须更新网格 $('#view-mode-selector').kendoDropDownList({ change: onMChange }); 在方法更改中,我试图用 kendo.ui.progress($("#grid), true); 在方法的最后,当一切都完成时,我有 kendo.ui.progress($("#grid), false); 但是数据加载了,我看不到进度条 如果我

我使用dropDownList来显示一些值,以便在网格上过滤结果

我已使用“更改”事件查看何时必须更新网格

$('#view-mode-selector').kendoDropDownList({
    change: onMChange
});
在方法更改中,我试图用

kendo.ui.progress($("#grid), true);
在方法的最后,当一切都完成时,我有

kendo.ui.progress($("#grid), false);
但是数据加载了,我看不到进度条

如果我删除最后一条语句(“false”)我可以看到进度条,但它永远不会消失

如果我调试,它会在数据准备就绪时出现并消失

这不是数据加载太快的问题,有时数据需要5秒钟才能准备好。 数据已经在浏览器中,我只是显示或隐藏列

剑道版本v2016.2.714

谢谢

编辑

在onMChange上,我有一些ifs,其中我用我想要显示的列的名称填充一个数组(columnsToShow)(其他所有内容都将隐藏),然后我用以下代码调用一个函数:

showHideColumn: function(columnsToShow) {
        var grid = $(this.gridId).data("kendoGrid");
        var show = false;
        for (var i = 0; i < grid.columns.length; i++) {
            show = false;
            if (columnsToShow.length > 0) {
                for (var j = 0; j < columnsToShow.length; j++) {
                    if (columnsToShow[j] == grid.columns[i].field) {
                        grid.showColumn(i);
                        columnsToShow.splice(j, 1);
                        show = true;
                        break;
                    } 
                }
            }
            if (!show) {
                grid.hideColumn(i);
            }
        }
    }
showHideColumn:函数(columnsToShow){
var grid=$(this.gridId).data(“kendoGrid”);
var show=false;
对于(var i=0;i0){
对于(var j=0;j

这段代码在隐藏/显示列方面似乎效率很低,当我想显示所有列时(隐藏一些列后),所有活动都会停止几秒钟。我大约有30列和30行。

你的问题有点误导。
#grid
元素是否难以显示网格控件的加载图标(根据元素名称)或下拉控件(根据问题标题)

如果网格

为了显示我使用的加载图标:

kendo.ui.progress($("#grid").data("kendoGrid").element, true);
并隐藏:

kendo.ui.progress($("#grid").data("kendoGrid").element, false);
如果下拉

我不必为下拉列表强制显示加载图标,但有一个示例,注意注释指定:

元素必须应用位置:相对样式


此外,需要注意的是,元素不能有子元素。

是否使用dataSource.read()函数从后端检索数据?谢谢,我同意,这有点误导,我试图根据下拉选择显示网格的加载图标。我试过你的解决办法,但没用。当我调试时我可以看到这个条,但是当我使用grid.hideColumn(I)(在一个循环中)隐藏列时,它似乎停止了。有没有一种方法可以一次隐藏多个列?嗯,我们在解决方案中使用了上面的方法,它工作了。。。您是否使用AJAX调用来检索
#grid
的数据源?尽管与初始问题无关,但可以基于值显示/隐藏列,例如,
grid.hideColumn(“字段名”);hideColumn(“FieldName2”)
使用AJAX调用原始数据源。但是,我们希望根据下拉选项显示或隐藏表。当用户从下拉列表中选择一个选项时,不会再进行ajax调用。因此,当从下拉列表中选择某个选项时,数据将在本地检索?也许这篇文章有一些用处?此外,如果您可以共享更多的代码,这可能会有所帮助?特别是围绕
progress()
onMChange
)的代码,我认为您遇到了问题,因为数据是在本地加载的。。唯一的另一个建议是使用a,但当然,这并不理想,但这是另一种选择。