javascript - 剑道 UI 网格 : custom edit form with datepicker returning false format

标签 javascript kendo-ui kendo-grid

我无法使用 KendoUI 网格。到目前为止,设置按预期工作。我创建了一个包含 5 个条目的自定义数据源,所有条目都包含标题、描述和值。值可以不同,它们可以是: bool 值、数字、文本、日期或时间。

为编辑弹出窗口使用自定义 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,但我似乎找不到任何人遇到同样的问题。可能是因为我使用了错误的搜索关键字。无论是什么情况:有没有人遇到过同样的问题或者谁知道解决方案是什么?

//编辑:一点补充使问题更清楚(我希望):

  1. 创建 KendoGrid 作品
  2. 也可以将自定义模板表单绑定(bind)到编辑弹出窗口
  3. 首先所有字段都显示正确的类型(bool/numeric/date/time/text)
  4. 在编辑弹出窗口中,日期格式正确,因为我需要 id
  5. 保存数据时发生错误,弹出返回数据源的值包含 YYYY-mm-ddTHH:ii:ss.000Z 格式而不是 dd-mm-YYYY

最佳答案

Kendo UI 将日期存储为 JavaScript Date 对象,因此它始终按原样存储(无论它如何显示或输入)。

要么在服务器上接受此格式,要么在 createupdate 函数中将其转换为 dd-mm-YYYY >DataSource.transport.

你可以在transport.create.data中实现一个功能和 transport.update.datatransport.parameterMap .

关于javascript - 剑道 UI 网格 : custom edit form with datepicker returning false format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16749397/

相关文章:

html - 如何让表格数据元素只占用他们需要的空间?

javascript - 尝试管理从 API 获取的未定义值 - React

javascript - 当我从 Controller 更改它时,Angular ng-style 不会自动应用更改

kendo-ui - 使用 Kendo UI Grid,您如何访问过滤和排序的数据?

javascript - 我如何定义一个简单的基本剑道网格并扩展它

asp.net-mvc - 为什么 `data(“kendogrid” )` 未定义?

javascript - 欧元格式剑道网格列 Angular JS

javascript - 如何延迟加载js?

javascript - 惰性图像加载器

Angular 2 - Kendo UI Datepicker 默认输入占位符