2016-06-20 2 views
0

양식 제출시 검도 격자 데이터를 컨트롤러에 게시하는 데 사용할 수있는 코드를 찾고 있습니다. 참고 : 표 데이터를 사용하여 Excel 파일을 만들어야하므로 JSON 게시를 사용할 수 없습니다. 내 jquery에서 수행하려고하는 것 : 여기 UserRegistrationForm은 모눈을 포함하는 내 양식 이름입니다.양식 제출 후 검도 격자 데이터 게시

$("#UserRegistrationForm").submit(); 

그리드 값을 가져 오는 컨트롤러 동작을 제안 할 수 있습니까?

+0

이것에 어떤 뉴스? – DontVoteMeDown

답변

0

이를 달성하기 위해 양식을 서브 바이닝하기 전에 일반적으로 표의 데이터로 숨겨진 필드를 생성합니다.

$("#my-form").submit(function() { 
    var grid = $("#grid").data("kendoGrid"), 
     data = grid.dataSource.data(), 
     columns = grid.options.columns.map(function(item) { return item.field; }), 
     html = ""; 

    for (var i = 0; i < data.length; i++) { 
     var fields = Object.keys(data[i]); 

     for (var n = 0; n < fields.length; n++) { 
      if (columns.indexOf(fields[n]) > -1) { 
       html+= "<input type='hidden' name='" + fields[n] + "[" + i + "]' value='" + data[i][fields[n]] + "' />"; 
      } 
     } 
    } 

    $("#hidden-fields").empty().append(html); 
}); 

Working Demo

이 양식 안에 또한 사업부 (#hidden-fields) 내부에 숨겨진 필드 세트가 발생합니다 :위한 간단한 방법은 그렇게.

name="PropertyA[0]" value="valueOfA0" 
name="PropertyB[0]" value="valueOfB0" 
name="PropertyA[1]" value="valueOfA1" 
name="PropertyB[1]" value="valueOfB1" and so on... 

이 쉽게 ASP.Net MVC 목록 매개 변수에 맞는 또는 뷰 모델 내부 목록의 경우, 단지 속성 이름, 예를 들어, 전에 뷰 모델의 이름을 추가 : 그것의 이름은 다음과 같이 될 것입니다 ViewModel.PropertyA[0]. PHP의 경우 배열이됩니다. $_POST["PropertyA"]. 다른 API 언어가 확실하지 않습니다.

+0

참고 : 숨겨진 필드 솔루션이 작동하지만 (필자는 그렇게했습니다.) 대용량 데이터 세트에는 적합하지 않으며 그리드 페이징을 사용하면 모든 행이 동시에 렌더링되지 않으므로 전혀 작동하지 않습니다. –

+0

@TheDreadPirateStephen "큰 데이터 세트에서 작동하지 않는다"는 것은 무엇입니까? 브라우저 나 API가 제대로 처리 할 수없는 데이터가 있습니까? 그리드에서 서버 페이징을 설정했다면 실제로는 완전히로드되지 않았기 때문에 모든 데이터를 처리 할 수는 없지만 실제로로드되지 않은 경우에는 실제로 데이터를 업데이트 할 목적이 없습니다. 권리? Btw, 그리드가 클라이언트 측에서 호출되는 경우 위의 스 니펫은 데이터가 완전히로드되면 [check this] (http://dojo.telerik.com/aXiYO) 제대로 작동합니다. – DontVoteMeDown

+0

클라이언트 측에서도 한 번에 한 페이지의 데이터 만 html로 렌더링됩니다. 나머지 데이터는 dataSource뿐입니다. 따라서 렌더링되지 않은 행은 숨겨진 입력 필드를 렌더링하지 않으므로 양식이있을 때 게시되지 않습니다. 그런 다음 페이지 크기가 가장 큰 데이터 집합 크기를 렌더링 할 정도로 충분히 커야 결국 결국 너무 많은 HTML이 렌더링되고 브라우저는 엉망이되기 시작합니다. 예를 들어, 숨겨진 입력 렌더링을 추가 한 다음 양식을 그리드와 함께 게시하면 현재 페이지의 데이터 만 게시됩니다. –