2012-10-17 2 views
2

안녕하세요 저는 Kendo 그리드를 사용하여 가격표를 편집하고 있습니다.그리드의 검도 캘린더

@(Html.Kendo().Grid(Model).Name("PriceList") 
    .Columns(columns => 
    { 
     columns.Bound(p => p.Id).Hidden(); 
     columns.Bound(p => p.Name); 
     columns.Bound(p => p.ValidFrom).Format("{0:dd.MM.yyyy h:mm:ss}"); 
     columns.Bound(p => p.ValidTill).Format("{0:dd.MM.yyyy h:mm:ss}"); 
     columns.Bound(p => p.Created).Format("{0:dd.MM.yyyy h:mm:ss}"); 
     columns.Bound(p => p.UserName); 
     columns.Bound(p => p.FilePath); 
     columns.Command(command => { command.Edit(); command.Destroy(); }); 
    }) 
    .DataSource(dataSource => dataSource.Ajax() 
      .Model(model => 
      { 
       model.Id(p => p.Id); 
       model.Field(p => p.ValidFrom).Editable(false); 
       model.Field(p => p.ValidTill).Editable(true); 
       model.Field(p => p.Created).Editable(false); 
       model.Field(p => p.UserName).Editable(false); 
       model.Field(p => p.FilePath).Editable(false); 
       model.Field(p => p.Name).Editable(false); 
     }) 
     .Read("PriceList_Read", "Admin")  
     .Destroy("PriceList_Editing_Destroy", "Admin") 
     .Update(update=>update.Action("PriceList_Editing_Update", "Admin")) 
     .Events(e=>e.Error("error_handler")) 
    ) 
    .Editable(editable => editable.Mode(GridEditMode.InLine)) 
    .AutoBind(true) 
) 

그리고 내 컨트롤러에 그리드에서 편집 값을 전달 문제를 겪고 : 나는 테이블에 하나의 값을 편집하려고

public ActionResult PriceList_Editing_Update([DataSourceRequest] DataSourceRequest request, PriceListViewModel model) 
     { 

        int Id = model.Id; 
        string Name = model.Name; 
        DateTime date = model.ValidTill; // 0001 00:00:00 value all the time 

      return View("Index", GetViewResult()); 
     } 

나는 항상 빈 날짜 값을 다시 얻고있다 (공백에 의해 나는 {1. 1. 0001 0:00:00}를 의미한다) 동일한 문제는 DateTime 속성 (Created와 ValidFrom)을 사용하는 다른 2 개의 열과 같다. 나머지 값은 올바르게 다시 게시됩니다. 그 값을 string DateTillStr = Request.Params["ValidTill"];을 사용하여 얻으려고했지만 방화 광에서 내 GET을 확인하면 그리드가이 값을 내부로 되돌려 보내지 않음을 볼 수 있습니다. 요청은 내 모델 개체의 NON Datetime 값만 보냅니다. 이처럼 :

Actual false 
FilePath D:\Projects\CPSkla\CPSkla\App_Data\Cen°k 2012_10.xlsx 
Id 23 
Name Testovací ceník 
User 0 
User1 null 
UserName djezek 

아무것도 더 이하도 아니다, 단지 내 모델에서 나는 나머지 4 말이냐이 7 속성 :

public partial class PriceListView 
{ 
    public int Id { get; set; } 
    public int User { get; set; } 
    public string Name { get; set; } 
    public System.DateTime ValidFrom { get; set; } 
    public System.DateTime ValidTill { get; set; } 
    public string FilePath { get; set; } 
    public Nullable<System.DateTime> Created { get; set; } 
    public Nullable<System.DateTime> Updated { get; set; } 
    public bool Actual { get; set; } 
    public string UserName { get; set; } 
} 

다시 이러한 데이터를 게시 할 수있는 다른 방법이 있나요? 업데이트 요청에 추가 데이터를 첨부 할 수 있다고 생각했지만 자바 스크립트 함수의 테이블에서 편집 된 행을 식별하는 방법에 문제가있었습니다 (선택한 값을 식별하는 방법을 알고 있지만 편집하지는 못했습니다).

검도 그리드 안의 캘린더 선택 도구가 실제 선택한 값을 입력 날짜 값에 할당 된 입력으로 사용하지 않는다는 것을 알아 냈습니다. 이견있는 사람?

답변

1

격자의 save 이벤트를 사용하면 입력 필드, 모델 (dataItem) 및 입력 요소에서 사용 된 HTML 요소와 같은 실제 값을 볼 수 있습니다.

추가 값을 보내려는 경우 (또는 문제가있는 필드를 다른 방식으로 보내려는 경우 업데이트 구성의 data 기능을 사용하십시오).

1

내 기억이 맞다면 이것이 날짜와 시간의 문화 이슈라고 생각하며 검도 UI에만 국한되지 않고 ASP.NET MVC에만 해당됩니다.

예상 날짜 형식 문자열은 월/일/년이며, 날짜가 일/월/년으로 들어오는 경우 그래서 예를 들어, 당신은 널 (null) 날짜 값 (0001 0시 0분 0초)를 얻을 것이다

참조 이 SO이

을하는 데 도움이

MVC DateTime binding with incorrect date format

희망을 질문

관련 문제