2012-01-09 3 views
0

마스터가 그리드이고 세부 정보가 부분 뷰인 마스터/세부 시나리오가 있습니다. 나는 클릭하면 아약스를 통해 세부 사항을로드하려면 다음 코드를 사용하여 테이블에 열을 추가 할 수 있습니다Ajax.ActionLink와 마스터/세부 시나리오의 javascript 값 동일

@Ajax.ActionLink(("details", "ViewDetails", new { id = item.Id}, new AjaxOptions { 
      UpdateTargetId="ProjectDetails", 
      Url=Url.Action("ViewDetails"), 
      LoadingElementId="ProjectDetailsLoading", 
      LoadingElementDuration=2000 }) 

하지만 행의 세부 사항을 표시하려면 선택 무엇? 글쎄, 내가 클라이언트에 걸고 나는 다음과 같이 중 ViewDetails 작업을 다시 전송하는 데 필요한 ID를 당길 수있는 OnRowSelected() 이벤트가 있습니다

<script type="text/javascript"> 
function onRowSelected(e) { 
    ID = e.row.cells[0].innerHTML; 

    // now what? How do I form the equivalent of Ajax.ActionLink? 
} 
</script> 

이 게시물 : Ajax.ActionLink triggering from Javascript?은 $ 사용하는 방법을 보여줍니다. get()을 사용하여 Ajax 포스트 백을 트리거하지만 서버 측 동등 물에서 모든 것을 (보내는 데 필요한 ID 포함) 지정하는 방법을 보여주지는 않습니다. 귀하의 도움에 감사 드리며 귀하의 솔루션이 많은 사람들을 도울 것이라 확신합니다!

답변

0

격자가 무엇인지 알지 못하며 onRowSelected 이벤트에 대해 알지 못하지만 격자의 첫 번째 셀 안에 HTML5 data- * 속성을 사용할 수 있습니다. 예를 들어 숨겨진 div를 넣거나 렌더링을 제어 할 수있는 경우 해당 <tr>에 직접 넣을 수 있습니다. 사실 여기에 필요한 것은 행동의 URL입니다. 그래서 여기

은 각 행의 첫 번째 셀 내부에 넣을 수있는 숨겨진 사업부와 예입니다 :

<div style="display:none;" data-url="@Url.Action("details", "ViewDetails", new { id = item.Id })"></div> 

을 한 후 간단합니다 :

function onRowSelected(e) { 
    var url = $('div', e.row.cells[0]).data('url'); 
    $('#ProjectDetailsLoading').show(); 
    $.ajax({ 
     url: url, 
     type: 'GET', 
     cache: false, 
     success: function(result) { 
      $('#ProjectDetails').html(result); 
     } 
     complete: function() { 
      $('#ProjectDetailsLoading').hide(); 
     } 
    }); 
} 
+0

이 훌륭합니다, 나는 그것을 줄 것이다 시도! 사실, 그리드는 telerik mvc3 그리드이지만,이 작업을 수행 할 수 있다고 생각합니다. – AldenG

관련 문제