2011-12-22 3 views
0

일부 JqGrid를 동적으로 생성하고 싶습니다. 이렇게하려면 HTML 컨텐트를 만들기 위해 목록을 반복합니다.JqGrid, 표의 ID를 매개 변수로 지정하십시오.

 @foreach(string clientCode in ViewBag.Codes) 
    { 
     <table class="jqgCode" id="[email protected]" cellpadding="0" cellspacing="0"></table> 
     <div id="[email protected]" style="text-align:center;"></div> 
    } 

동적으로 고유 한 코드 값으로 격자 ID를 생성합니다.

기본적으로 그리드는 데이터 만 변경되는 동일한 형식을 가지며 코드는 SQL 요청을 변경하는 매개 변수입니다. 따라서 컨트롤러에서 내 작업에 제공하기 위해 그리드 ID를 가져와야합니다. 여기

내가 할 노력하고있어입니다 : 내가 디버그 모드에서 액션 메소드 "코드 세부 정보"에서 찾고 있어요 때

<script type="text/javascript"> 
$(document).ready(function() { 
    $('.jqgCode').jqGrid({ 
     //url from wich data should be requested 
     url: '@Url.Action("CodeDetail")', 
     //type of data 
     datatype: 'json', 
     //url access method type 
     mtype: 'POST', 
     postData: {code: $(this).attr('id')}, 
     ......... 
     }); 
}); 

을, 나는 내가 "코드에서 null 값을 볼 "매개 변수.

내 컨트롤러에서 그리드 ID를 사용하려면 어떻게해야합니까? 어쩌면 내가하고 싶은 일을 할 수있는 더 좋은 방법이있을 수 있으므로 모든 조언은 좋은 것입니다.

미리 감사드립니다.

답변

1

하나의 문제는 $('.jqgCode')이 정확히 하나의 요소 ($('.jqgCode').length은 1이어야 함)를 반환해야한다는 것입니다. 이 작업을 수행하지 않으면 서버에서 반환 된 데이터에 동일한 URL ('@Url.Action("CodeDetail")')과 ID를 사용하여 두 개의 그리드를 만들 수 있습니다. 경우

$('.jqgCode').length 당신은 다음과 같은 자바 스크립트 코드를 다시 작성할 수 있습니다 (1)과 같다면 :

$(document).ready(function() { 
    var $myGrid = $('.jqgCode'), gridId = $myGrid.attr('id'); 
    $myGrid.jqGrid({ 
     url: '@Url.Action("CodeDetail")', 
     datatype: 'json', 
     mtype: 'POST', 
     postData: {code: gridId}, 
     ......... 
     }); 
}); 
관련 문제