【问题标题】:kendoDropDownList loading bar not showingkendoDropDownList 加载栏未显示
【发布时间】:2017-05-05 12:12:42
【问题描述】:

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

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

$('#view-mode-selector').kendoDropDownList({
    change: onMChange
});

在 onMChange 方法中,我试图显示进度条

kendo.ui.progress($("#grid), true);

在方法结束时,我已经完成了

kendo.ui.progress($("#grid), 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);
            }
        }
    }

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

【问题讨论】:

  • 你是否使用 dataSource.read() 函数从后端检索数据?

标签: kendo-ui kendo-grid


【解决方案1】:

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

如果网格

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

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

并隐藏:

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

如果下拉

我不必强制显示下拉菜单的加载图标,但是有一个示例 here,注意注释指定:

元素必须有一个 position:relative 应用的样式

另外再往下,注意元素不能有子元素。

【讨论】:

  • 谢谢,我同意,这有点误导,我试图根据下拉选择显示网格的加载图标。我尝试了您的解决方案,但没有奏效。我在调试时可以看到该栏,但是当我使用 grid.hideColumn(i) 隐藏列时它似乎停止了(在循环内),有没有办法一次隐藏多个列?
  • 嗯,我们在我们的解决方案中使用了上述方法并且它有效...您是否使用 AJAX 调用来检索 #grid 的数据源?虽然与最初的问题无关,但可以根据 field 值显示/隐藏列,例如grid.hideColumn("FieldName"); grid.hideColumn("FieldName2")
  • 原始数据源是用 AJAX 调用的。但是我们想根据下拉选项显示或隐藏表格。当用户从下拉列表中选择一个选项时,不会再进行 ajax 调用。
  • 所以当从下拉列表中选择某些内容时,数据是在本地检索的?或许this 的帖子可以派上用场?此外,如果您可以分享更多代码可能会有所帮助?特别是围绕progress() (onMChange)的代码
  • 我认为您遇到了问题,因为数据是在本地加载的。只有其他建议是使用 timer 但是,当然,这并不理想,但它是另一种选择.
猜你喜欢
  • 1970-01-01
  • 2019-05-26
  • 1970-01-01
  • 1970-01-01
  • 2017-09-28
  • 1970-01-01
  • 2020-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多