我在使用 KendoUI 网格时遇到了问题。到目前为止,设置按预期工作。我创建了一个包含 5 个条目的自定义数据源,所有条目都包含标题、描述和值。这些值可以不同,它们可以是:布尔值、数字、文本、日期或时间。
使用自定义 KendoTemplate 进行编辑弹出窗口,我可以让弹出窗口根据值显示正确的字段类型:
<!-- Datefield -->
#if($.isNumeric(value) == false && value.match(/^\d{2}([.\/-])\d{2}\1\d{4}$/)) {#
<li>
<label>Waarde</label>
<input id="datepicker" data-bind="value:value" style="width: 40%;" />
</li>
#} else if($.isNumeric(value) == false && value.match('([01]?[0-9]|2[0-3]):[0-5][0-9]')) {#
<li>
<label>Waarde</label>
<input id="timepicker" data-bind="value:value" style="width: 40%;" />
</li>
<!-- Yes/No Radio button if value is J(=Yes) or N(=No) -->
#} else if (value == "J" || value == "N") {#
<li>
<label>Waarde</label>
<input type="radio" name="value" data-bind="checked:value" value="J" /> Ja
<input type="radio" name="value" data-bind="checked:value" value="N" /> Nee
</li>
<!-- If the value is Numeric then show a numeric textbox -->
#} else if($.isNumeric(value)) {#
<li>
<label>Waarde</label>
<input type="text" data-bind="value:value" data-role="numerictextbox" style="width:50%;" />
</li>
<!-- Else: textfield for the value -->
#}else {#
<li>
<label>Waarde</label>
<input type="text" data-bind="value:value" class="k-textbox" />
</li>
#}#
到目前为止一切顺利,这就像它应该的那样工作。只要在属于 KendoGrid 的“编辑”方法中打开弹出窗口,就会创建日期选择器和时间选择器,如下所示:
if($('#datepicker').length > 0) {
console.log('datefield');
$("#datepicker").kendoDatePicker({
format: "dd-MM-yyyy",
parseFormats: ["dd-MM-yyyy"]
});
}
if($('#timepicker').length > 0) {
console.log('timefield');
$("#timepicker").kendoTimePicker({
timeFormat: "HH:mm"
});
}
但是(!)一件事出了问题。没有什么我试过的,编辑表单发布的返回值不包含日期,19-11-2013
但包含日期19-11-2013T00:00:00.000Z
。至少脚本的基础是工作的,但是由于这种格式,这个字段在编辑后被识别为“时间”而不是“日期”:我真的只需要 dd-mm-yyyy 通知和 HH:ii 时间。
我搜索了 KendoForums、Google 和 StackOverflow,但似乎找不到任何有同样问题的人。这可能是因为我使用了错误的搜索关键字.. 不管是什么情况:有没有人遇到过同样的问题或知道解决方案是什么?
//编辑:添加一点使问题更清楚(我希望):
- 创建 KendoGrid 作品
- 将自定义模板表单绑定到编辑弹出窗口也很有效
- 首先所有字段都显示正确的类型(布尔/数字/日期/时间/文本)
- 在编辑弹出窗口中,日期格式正确,因为我需要 id
- 保存数据时出现错误,弹出返回数据源的值包含 YYYY-mm-ddTHH:ii:ss.000Z 格式而不是 dd-mm-YYYY