2017-12-07 15 views
0

모델을 모눈에 바인딩하고 선택 항목을 가져 오는 중입니다. 모델을 전달하고 내가 선택한 데이터를 표시 확인란과 함께 표시 할 수 있습니다. 그러나 컨트롤러에 모델을 다시 전달하려고하면 선택 모델을 변경하지 않고 처음에 뷰에 전달 된 동일한 모델을 다시 얻는 것처럼 보입니다.모델을 모눈에 바인딩하고 선택 항목을 다시 게시

보기 :

@model ExViewModel 

@(Html.Kendo().Grid(Model.Classes) 
.Name("grid") 
.Columns(columns => 
{ 
    columns.Bound(c => c.IsChecked).ClientTemplate("<input type='checkbox' #= IsChecked ? checked='checked':'' # class='chkbx' />" + "<input type='hidden' name='id' value='#= IsChecked#' />").Width(50); 
    columns.Bound(c => c.Name).Width(175); 
    columns.Bound(c => c.Details).Width(175); 
}) 
.Scrollable().Groupable().Sortable().Filterable() 
.DataSource(dataSource => dataSource 
      .Ajax() 
      .Batch(true) 
      .ServerOperation(false) 
      ) 
) 

@using (Html.BeginForm("CallNext", "Home", FormMethod.Post)) 
{ 
    <input hidden="hidden" id="model_output" name="model_output" value="@(Json.Encode(Model))" /> 
    <input id="btnSubmit" class="btn btn-primary" type="submit" value="Next >" /> 
} 

<script> 
    $(function() { 
     $('#grid').on('click', '.chkbx', function() { 
      var checked = $(this).is(':checked'); 
      var grid = $('#grid').data().kendoGrid; 
      var dataItem = grid.dataItem($(this).closest('tr')); 
      dataItem.set('IsChecked', checked); 
     }) 
    }) 
</script> 

컨트롤러 : 위의 사용

[HttpPost] 
public ActionResult CallNext(string model_output) 
{ 
. . . 
} 

, 내가 다시 컨트롤러에서 얻을 model_output이 클래스에 대한의 IsChecked 플래그에 대한 모든 기본 값이 있습니다. 나는 내가 뭘 바라보고 있는지 잘 모르겠다 - 나는 몇 가지 예를 온라인으로 보았지만 나는 Kendo에 대한 많은 경험이 없기 때문에 잘못된 것이 무엇인지 확신 할 수 없다. 어떤 조언을 크게 주시면 감사하겠습니다.

+0

이'Json.Encode (Model)'은 면도 페이지가 html로 렌더링 된 후에도 일정합니다. 즉, 체크 박스를 클릭하면이'Model' 객체는 여전히 동일합니다. Kendo UI가 행 선택 기능을 제공하기 때문에 맞춤 체크 박스가 필요합니까? –

+0

불행히도 확인란이 필요하며 데이터를 전달하는 다른 방법이 있습니까? 예를 들어 뷰백에서 모델을 전달하면 업데이트 할 수 있습니까? – user1267983

+0

클릭 처리기가 실행 중인지 확인할 수 있습니까? 나는 예라고 추정 할 것이다. – Richard

답변

0

클릭 핸들러가 실행 중인지 확인할 수 있습니까? 나는 예라고 추정 할 것이다.

value="@(Json.Encode(Model))"이 페이지 렌더링 시간에 생성되지 않았기 때문에 양식이 원래 모델을 게시합니다. 제출 버튼을 변경

봅니다 saveChanges

$('#grid').data("kendoGrid").saveChanges(). 

saveChanges를 데이터 소스 동기화를 호출하는 그리드를 수행합니다.

공구 막대를 사용할 수도 있습니다. 공구 바를 사용하면 더 많은 배관 작업을 수행 할 수 있습니다. 자세한 내용은 demos을 참조하십시오.