2016-11-29 3 views
2

Я использую интерфейс Kendo в первый раз и имел небольшую проблему. Когда я создал класс с свойством DateTime и реализовал его в Kendo Grid, поле DateTime всегда показывает это: «Поле DateOfLastCheck должно быть датой». Я пробовал все, менял порядок, ставил атрибут, но всегда тот же. Это мой Кендо код:Kendo UI DateTime

@(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")) 
    ) 
) 
+0

- ваш атрибут 'DateOfLastCheck' с нулевым значением? Возможно, вы захотите проверить это, а также как быструю проверку, можете ли вы сделать его перед строкой перед связыванием, чтобы проверить, работает ли форматирование? * Не предлагая вам изменить тип данных здесь, просто попросите вас проверить, работает ли он, когда строка и идти оттуда * – Jaya

ответ

0

Для этого вам нужно будет настроить ViewModel и установить все поля даты в System.DateTime. Затем привяжите поля сетки к использованию этой ViewModel. Я боролся с этим около часа. Формат неправильный, но это не помешает отображению данных. Я просто проверил это на одном из моих старых проектов Grid.

1

Ваш код:

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

Обратите внимание, что mm для минут. Вероятно, вам нужны месяцы здесь MM.

Я предполагаю, что у вас есть что-то вроде 2016/59/29, из-за этого, что явно недействительная дата.

+0

О, я задавался вопросом, почему такая странная дата ... спасибо! –