当过滤器属性设置为

时间:2018-02-19 14:52:24

标签: javascript asp.net asp.net-mvc kendo-ui kendo-asp.net-mvc

我有一个绑定到远程数据源的kendo下拉列表。我已经按照文档和配置虚拟化并且远程数据源正在按预期工作,但是如果完全设置了Filter选项,那么在打开的下拉列表中显示错误会在JS中引发错误,并且选择任何内容会引发错误在JS中。关闭列表的唯一方法是单击下拉窗口小部件中的关闭箭头。drop down list arrow

以下是我在控制台中看到的错误的屏幕。 '添加'选择项目时发生未定义:

add of undefined

'的Attr'单击外部下拉列表以模糊并关闭时发生未定义。

attr of undefined

我在这里不知所措。任何添加过滤器选项都会导致这些错误。我已经通过系统地删除所有可能的选项来解决问题,而且似乎唯一能阻止错误发生的是筛选选项:

@(Html.Kendo().DropDownList()
        .Name("MyDropDown")
        .DataTextField("MyText")
        .DataValueField("Id")
        .Filter(FilterType.Contains) //<--This guy right here
 ...
 ..more code..
 ...
 )

我在JavaScript中尝试过它,我已经尝试使用kendo ASP.NET MVC包装器和.ToClientTemplate选项。我只是单独使用MVC包装器尝试过它。我一定是在遗漏一些东西,但是我没有看到它。

编辑:问题似乎发生在kendo.all.js的关闭处理程序中:

_closeHandler: function (e) {
            if (this.trigger(CLOSE)) {
                e.preventDefault();
            } else {
                this._focused.attr('aria-expanded', false);
                this.ul.attr('aria-hidden', true);
            }
        },

当关闭时将aria-expanded设置为false时,_focused属性未定义。这发生在关闭事件之前,因为我试图挂钩,看看是否有东西我可以手动纠正。这个脚本没有任何原因吗?我错过了一个文件吗?似乎所有东西都配置正确,但是,小部件已经坏了。

编辑#2:我想也许kendo libs有问题,或者库之间有些不匹配,或者这可能是旧版本中的错误,所以我将我的kendo库和mvc包装器更新到了最新版本版本(2018.1.117)和完全相同的问题仍在发生。我想也许在某种程度上导致问题的jquery版本不匹配,但根据文档,版本2018.1.117需要jQuery版本1.12.4,我正在使用。刚刚更新了所有库和依赖项,我仍然收到错误。

2 个答案:

答案 0 :(得分:1)

在设置问题的独立测试时,我偶然发现第三方脚本中的一行正在劫持jQuery.fn.focus,这显然有一些严重的副作用。在第三方脚本中删除此行似乎完全解决了这个问题。

答案 1 :(得分:0)

尝试.Filter("contains"),可能会做到这一点。