Kendo DropDownList 版本 2015.1.318 中的错误
Bug in Kendo DropDownList release 2015.1.318
刚刚试过 Kendo UI 的最新版本,但在自定义弹出编辑器中使用 DropDownList 时似乎出现了问题。
如果 DropDownList 的 dataSource
设置为 JavaScript 数组或对象,所选值不会更新网格模型。
具有配置为 dataTextField
和 dataValueField
的远程 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.
刚刚试过 Kendo UI 的最新版本,但在自定义弹出编辑器中使用 DropDownList 时似乎出现了问题。
如果 DropDownList 的 dataSource
设置为 JavaScript 数组或对象,所选值不会更新网格模型。
具有配置为 dataTextField
和 dataValueField
的远程 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.