2013-02-20 3 views
0

저는 검도 그리드를 사용하고 있고 ViewModels 콜렉션을 Read 메소드에로드했습니다. 모든 것이 여기 좋고 예상대로 작동합니다.검도 그리드가 데이터 바인딩 이전에 업데이트 방법을 호출하기 전에

그러나 그리드에서 저장 버튼을 클릭하면 Update 메서드에 제공된 개체가 더 이상 완전하지 않고 사용할 수 없게됩니다.

단순한 문자열 [] 속성이 항상 null 인 경우를 제외하고는 모든 속성이 예상대로 설정됩니다. 데이터가 올바르게 그리드에 바인딩에도 불구하고

@(Html.Kendo().Grid<Occam.Portal.ViewModels.UserViewModel>() 
    .Name("SystemUserGrid") 
    .Columns(columns => 
     { 
      columns.Bound(user => user.UserName); 
      columns.Bound(user => user.Email); 
      columns.Bound(user => user.Roles): 
     } 
.Ajax() 
.Batch(true) 
.ServerOperation(false) 
.Events(events => events.Error("error_handler")) 
.Model(model => 
    { 
     model.Id(m => m.UserId); 
     model.Field(p => p.UserName).Editable(false); 
     model.Field(p => p.Roles).Editable(false); 
    }) 

.Read("SystemUsers_Read", "Administration") 
.Update("SystemUsers_Update", "Administration") 
)) 
... 

왜 검도 라이브러리가 null로 문자열 [] 프로퍼티 역할을 떠날 것이다 :

그리드는 같은 지정?

나는 Kendo 데모 또는 포럼에서 관련없는 것을 찾을 수 없습니다.

답변

2

당신이 보내준 것과 똑같은 모델을 다시 전달하지 않기 때문에 새 UserViewModel List를 만들고 값을 적용하려했으나 기본이 아니므로 string []을 어떻게 알지 못합니다. 유형; 지원되지 않는 많은 유형이 있습니다. RolesStr을 문자열로 포함하도록 모델을 변경하고 모델에서 string []에서 string으로 (split 등을 사용하여) 앞뒤로 변환 할 수있는 메소드가있는 경우 원하는 결과를 얻을 것이라고 생각합니다. 컨트롤러가 UserViewModel을 가져 오면 메서드를 호출하여 역할을 다시 채 웁니다.

나는 전체 목록을 받아 한 번 어쩌면 같은

public static IList<UserViewModel> SplitEm(IList<UserViewModel> userViewModels) 
{ 
    [Split each RolesStr into Roles] 
} 
public static IList<UserViewModel> JoinEm(IList<UserViewModel> userViewModels) 
{ 
    [Join all the Roles into each RoleStr] 
} 

에 그들 모두를 할 분명히이 두 가지의 구현 사소한하기 위해 Linq를 볼 수 있습니다 모델의 정적 메서드를 만들 것입니다.

+0

그래, 나는 검도가 정직하다는 것을 좋아하지 않는다. 나는 이미 당신이 위에서 제안한 것을하고 있었고 좋지는 않았습니다. 나는 Dto 클래스를 완전히 평평하게하고 결국 그렇게 처리했다. 감사 트레이 – Jammer

관련 문제