Kendo DropDownList 版本 2015.1.318 中的错误

Bug in Kendo DropDownList release 2015.1.318

刚刚试过 Kendo UI 的最新版本,但在自定义弹出编辑器中使用 DropDownList 时似乎出现了问题。

如果 DropDownList 的 dataSource 设置为 JavaScript 数组或对象,所选值不会更新网格模型。

具有配置为 dataTextFielddataValueField 的远程 dataSource 的下拉列表工作正常。

基本上,与 2014.3.1316 版本完美配合的代码不适用于 2015.1.318 版本(Chrome 的控制台中未报告任何错误)。

有人可以确认这是新版本的错误,还是我需要注意的其他事项?

编辑:这似乎影响了所有 DropDownList。所选项目不会立即更新模型 -- 只有在保存记录时才会更新。

我整理了一个简单的 Fiddle 来演示这个问题。对于以前的版本,选择一个项目会立即更新网格的模型并将 dirty 设置为 true。对于新版本,网格的模型不会更新(至少不会立即更新)。

对于下拉列表和多select 控件,它们进行了很多更改以允许新的分组和虚拟化功能发挥作用。 (我也是此更改的受害者 - 我现在仍在尝试修复我的代码)

我已经更新了您的 fiddle,其中包含您想要实现的可能解决方案 Update with Change Event added

我基本上已经为你添加了这个功能:

function changeCategory(e)
{

     $('#log2').text('This should be the ID of the category you changed too: '+ 
e.sender.value());
    }

但有关此更改的更多信息,您可以查看此处: Changes to Kendo UI Q1 2015

编辑: 此外,如果我的记忆是正确的,我认为 select 事件在更改事件之前触发,因此它将始终显示先前的值而不是已经 selected 的新值,并且当您单击更新网格时正在按照我所看到的预期进行更新。

Changes to Kendo UI Q1 2015 页面没有直接提及所描述的行为变化,但这很可能是由 DropDownList 小部件的重大变化引起的。

有一个非常简单的解决方法,但我怀疑它不是必需的,并且在某些时候会 'fixed'。

要模拟旧行为,您只需手动设置应该立即更新的模型字段。所以在 select 事件中添加类似...

model.set('CategoryID', dataItem.CategoryID);

已更新 Fiddle。如果不这样做,任何依赖方法都将使用原始值或旧值,这是不正确的(因此,我怀疑它会被修复)。

我也遇到了 2015.1.318 版本下拉列表的问题。 在最新版本 2015.1.327 中,这似乎已修复。

只需尝试在您的架构模型定义中为 CategoryID 指定一个默认值,我认为这将是一个更好的解决方案,因为只有当值为空时才会出现此错误

所描述的问题是 2015 年第 1 季度的一个已知错误 - BUG 623

它在最新的内部版本和即将发布的服务包中得到解决,该服务包将在本周末发布,将包括修复(和 many more

恐怕没有简单的解决方法,如the widget just sets its "_old" value to the new one on first select。因此不会引发更改事件。唯一可行的解​​决方案是升级到更新版本 Kendo UI.