我有一个kendo用户界面网格,它可以在一个列上进行在线编辑。在编辑时,该列应该使用数据报警器作为输入。
但是,在设置datepicker上的值,然后返回到同一行/列后,日期将不会显示在datepicker输入中。
我创建了一个Dojo来展示我的意思:https://dojo.telerik.com/eJEmoVEv/4
为了更好地解释这个问题,我要做一个简短的介绍:
发布于 2019-05-14 08:10:17
在@DontVoteMeDown的帮助下,我终于找到了答案。数据报警器期望注释字段为日期类型,因此添加一个kendo.parse,然后重置注释字段解决了这个问题。
请参阅更新后的kendo:https://dojo.telerik.com/eJEmoVEv/4
var dateTimeComment = kendo.parseDate(options.model.Comment);
options.model.Comment = dateTimeComment;
发布于 2019-05-13 14:39:49
处理剑道上的绑定总是很棘手的。我已经用一些更改更新了您的演示:
data-bind
时,您不需要处理小部件的状态。Kendo应该自己处理,但是您需要告诉kendo使用kendo.bind(element, model)
(文档)来处理这个问题。因此,您不需要设置data-value
属性。
函数commentEditor(容器,选项){ var datePicker = $('');datePicker.appendTo(容器);kendo.bind(datePicker,options.model);}Comment
字段类型:
为了使kendo知道如何将Comment
字段值作为日期处理,并将其正确设置为小部件,需要在它的模型定义中设置正确的数据类型:
注释:{ type:"date",可编辑: true }Comment
结果来确保parseDate
内容是一个有效的日期。如果无效,则转到另一个条件,在该条件下,它将验证Comment
是否不是null
、undefined
等,如果是,则打印空字符串。希望能帮上忙。
更新
不确定原因,但似乎kendo将选定的值作为字符串保存到绑定属性中。我已将此处理程序添加到小部件的change
事件中,该事件似乎有效:
datePicker.data("kendoDatePicker").bind("change", function(e) {
let model = this,
widget = e.sender;
model.Comment = widget.value();
}.bind(options.model));
这将强制Comment
属性为Date
类型。
https://stackoverflow.com/questions/56113415
复制相似问题