Kendo UI 日期时间

Kendo UI DateTime

我第一次使用Kendo UI,有点小问题。当我用 DateTime 属性 制作一个 class 并在 Kendo Grid 中实现它时,DateTime 的字段总是显示这个 "The field DateOfLastCheck must be a date."。我尝试了所有,更改顺序,放置一个属性, 但总是一样的。这是我的 Kendo 代码:

@(Html.Kendo().Grid<Models.OvergasClient>()
      .Name("grid")

      .Columns(columns =>
      {
          columns.Bound(c => c.Name).Width(200);
          columns.Bound(c => c.Address).Width(200);
          columns.Bound(c => c.AddressNumber).Width(200);
          columns.Bound(c => c.Floor).Width(200);
          columns.Bound(c => c.Appartment).Width(200);
          columns.Bound(c => c.RegNumber).Width(200);
          columns.Bound(c => c.Telephone).Width(200);
          columns.Bound(c => c.isChecked).Width(200);
          columns.Bound(c => c.DateOfLastCheck).Format("{0:yyyy/mm/dd}").Width(200);
          columns.Bound(c => c.EquipmentNumber).Width(200);
          columns.Bound(c => c.Type).Width(200);
          columns.Bound(c => c.Note).Width(200);
          columns.Bound(c => c.Status).Width(200);
          columns.Bound(c => c.Inspector).Width(200);
          columns.Bound(c => c.Editor).Width(200);
          columns.Command(command => { command.Edit().UpdateText("Запази").CancelText("Откажи").Text("Редактирай"); command.Destroy().Text("Изтрий"); }).Width(180);
      })
      .ToolBar(toolbar => {
          toolbar.Create().Text("Създай");

      })

      .ColumnMenu()
      .HtmlAttributes(new { style = "height:450px;" })
      .Editable(editable => editable.Mode(GridEditMode.PopUp))
      .Pageable(p => p.Refresh(true).PageSizes(true).ButtonCount(5))

      .Selectable(selectable =>
      {
          selectable.Mode(GridSelectionMode.Single);
          selectable.Type(GridSelectionType.Row);
      })

      .Sortable(sortable =>
      {
          sortable.SortMode(GridSortMode.SingleColumn);

      })
      .Filterable()
      .Scrollable()
      .Groupable(m=>m.Messages(c=>c.Empty("Постави името на колоната тук, за да сортираш по тази колона")))
      .Events(events => {
          events.Cancel("onCancel");
          events.Change("onChange");
          events.ColumnHide("onColumnHide");
          events.Edit("onEdit");
          events.SaveChanges("onSaveChanges");
          events.Save("onSave");
          events.Remove("onRemove");

          events.DetailExpand("onDetailExpand");
          events.DataBinding("onDataBinding");
          events.DataBound("onDataBound");
          events.ColumnShow("onColumnShow");
      })
      .DataSource(dataSource => dataSource
          .Ajax()
          .Model(model =>
          {
              model.Id(m => m.Id);
              model.Field(m => m.DateOfLastCheck).Editable(true);

          })
          .Read(read => read.Action("OvergasClients_Read", "OGTechnika"))
          .Create(create => create.Action("OvergasClients_Create", "OGTechnika"))
          .Update(update => update.Action("OvergasClients_Update", "OGTechnika"))
          .Destroy(destroy => destroy.Action("OvergasClients_Destroy", "OGTechnika"))
      )
)

为此,您需要设置一个 ViewModel,并将所有日期字段设置为 System.DateTime。然后绑定网格的字段以使用该 ViewModel。我为此挣扎了大约一个小时。格式不正确,但这不会阻止数据显示。我刚刚在我的一个旧网格项目中测试过它。

您的代码:

columns.Bound(c => c.DateOfLastCheck).Format("{0:yyyy/mm/dd}").Width(200);

请注意 mm 分钟 。您可能需要 MM 几个月。

我猜你有类似 2016/59/29 的日期,因此显然不是有效日期。

此处基于文档 http://docs.telerik.com/kendo-ui/framework/globalization/dateformatting mm 表示分钟而不是月份。您的 DateOfLastCheck 属性也可以为空吗?您可能也想检查一下。