2016-11-29 7 views
2

Ich benutze Kendo UI zum ersten Mal und hatte ein kleines Problem. Wenn ich eine Klasse mit DateTime-Eigenschaft erstellt habe und sie in Kendo Grid implementiere, zeigt das Feld für DateTime immer "Das Feld DateOfLastCheck muss ein Datum sein." Ich habe alles versucht, Reihenfolge geändert, ein Attribut gesetzt, aber immer dasselbe. Das ist mein Kendo Code: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

ist das Attribut 'DateOfLastCheck' nullable? Vielleicht möchten Sie das überprüfen, auch als eine schnelle Überprüfung, können Sie es vor dem Binden in eine "Zeichenfolge" umwandeln, um zu überprüfen, ob die Formatierung funktioniert? * Ich schärfe dich nicht, den Datentyp hier zu ändern, ich frage dich einfach, ob es funktioniert, wenn eine Zeichenfolge und von dort gehen * – Jaya

Antwort

0

Dazu geben Sie eine Ansichtsmodell einrichten wollen, und stellen Sie alle Datumsfelder System.DateTime. Binden Sie dann die Felder des Rasters, um dieses ViewModel zu verwenden. Ich kämpfte ungefähr eine Stunde damit. Das Format ist falsch, aber das verhindert nicht, dass die Daten angezeigt werden. Ich habe das gerade auf einem meiner alten Grid-Projekte getestet.

1

Ihr Code:

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

Beachten Sie, dass mm für Minuten ist. Sie wollen wahrscheinlich MM für Monate hier.

Meine Vermutung ist, dass Sie etwas wie 2016/59/29 haben, aus diesem Grund, die eindeutig kein gültiges Datum ist.

+0

Oh, ich fragte mich, warum es so ein komisches Datum gibt ... Danke! –