Kendo datepicker问题

时间:2014-04-27 11:42:50

标签: kendo-ui datepicker kendo-grid

我在我的解决方案中使用了kendo UI,如下面的代码

    <div id="myGrid" data-role="grid"
            data-bind="source: viewModel"
            data-sortable="true"
            data-pageable="true"
            data-filterable="true"
            data-resizable="true"
            data-editable = "incell"
            data-selectable="true"
            data-columns='[
            { field: "Name", title: "Name" },
            { field: "StartDate", title: "Start date", format: "{0:dd/MM/yyyy}"},
            { field: "EndDate", title: "End date", format: "{0:dd/MM/yyyy}"},               
            { field: "ClosingDate", title: "Closing date", format: "{0:dd/MM/yyyy}"}]'

            data-toolbar ='[{name:"create"},
                         {name:"save"}]'>
    </div>

viewModel中的字段具有&#34; date&#34;类型。
让我们说我选择开始日期为16/05/2014,之后我保存更改。但更新后,我看到开始日期是15/05/2014。它发生在网格中的每个日期单元格中。 为什么日期比我选择的要少。
有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

请参阅此处给出的答案:javascript Date.parse

我认为问题是由您使用的浏览器引起的。我在IE中使用日期格式时遇到了很多麻烦。我发现在Chrome或Firefox中创建日期确切地给了我想要的东西,但在IE中,在创建或解析日期时,除了MM / dd / yyyy之外的任何格式在解析后都会在Date对象中给出错误的日期。

我的建议与我链接的答案相同:不使用列的“格式”字段,而是使用模板并自行解析。

data-columns='[
  { field: "Name", title: "Name" },
  { field: "StartDate", title: "Start date", template: "# parseDate(StartDate) #"},
  { field: "EndDate", title: "End date", template: "# parseDate(EndDate) #"},               
  { field: "ClosingDate", title: "Closing date", template: "# parseDate(ClosingDate) #"]'

然后拥有parseDate(date)功能:

function parseDate(date) {
    if (date == null) return '';

    //using the .slice() method keeps the leading '0' if MM or dd is single digit
    var rtn = ('0' + date.Date()).slice(-2) + '/' + 
              ('0 + (date.Month() + 1)).slice(-2) + '/' + 
              date.FullYear();

    return rtn;
}