Javascript KendoUI网格:日期选择器返回错误格式的自定义编辑表单
我被KendoUI网格卡住了。到目前为止,设置工作如期进行。我创建了一个包含5个条目的自定义数据源,所有条目都包含标题、描述和值。值可以不同,可以是:布尔值、数字、文本、日期或时间 使用编辑弹出窗口的自定义KendoTemplate,我可以根据值获得弹出窗口以显示正确的字段类型:Javascript KendoUI网格:日期选择器返回错误格式的自定义编辑表单,javascript,kendo-ui,kendo-grid,Javascript,Kendo Ui,Kendo Grid,我被KendoUI网格卡住了。到目前为止,设置工作如期进行。我创建了一个包含5个条目的自定义数据源,所有条目都包含标题、描述和值。值可以不同,可以是:布尔值、数字、文本、日期或时间 使用编辑弹出窗口的自定义KendoTemplate,我可以根据值获得弹出窗口以显示正确的字段类型: <!-- Datefield --> #if($.isNumeric(value) == false && value.match(/^\d{2}([.\/-])\d{2}\1\d{4}$/
<!-- 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>
#}#
然而,有一件事出了问题。与我尝试的不同,编辑表单发布的返回值不包含日期,如19-11-2013
,而是包含日期,如19-11-2013T00:00:00.000Z
。至少脚本的基础工作正常,但由于这种格式,编辑后该字段被识别为“时间”,而不是“日期”:我只需要dd-mm-yyy通知和HH:ii时间
我已经搜索了KendoForums、Google和StackOverflow,但我似乎找不到有同样问题的人。可能是因为我使用了错误的搜索关键字。。不管是什么情况:有没有人经历过同样的问题,或者谁知道解决方案是什么
//编辑:添加一点内容以使问题更清楚(我希望):
剑道UI将日期存储为JavaScript
Date
对象,因此它总是以它的形式存储(无论如何显示或输入)
在服务器上接受此格式,或者在数据源.transport的创建
和更新
功能中将其转换为dd-mm-YYYY
您可以在和或中实现函数。是的,我注意到了日期对象。这种方法的唯一障碍是我无法确定是日期还是时间字段需要更新。有什么想法吗?但你知道你想储存什么,不是吗?数据类型是知道是日期还是时间的唯一方法吗?为什么不使用两个不同的字段?目前这是唯一的方法是。原因是输入来自另一个系统,第二个字段不是选项(至少……可能是最后一个选项)…我在数据中存储了一个值类型字符串。别无选择。谢谢你的帮助。网格中的格式化问题很简单:我完全忘记了我可以使用PHP数据源更改格式!
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"
});
}