2009-12-14 3 views
2

제품 데이터베이스에 대한 검색을 실행중인 ASP.NET MVC 응용 프로그램이 있습니다. TreeGrid 모듈을 사용하여 jqGrid에 결과를 표시하려고합니다. 그리드가 AJAX-y가 될 필요는 없습니다. 왜냐하면 데이터가 정적이고 클라이언트에 즉시 보낼 수있을만큼 작기 때문입니다.AJAX가없는 ASP.NET MVC + jqGrid

첫 번째 질문 : jqGrid를 설정하여 URL에서 JSON 데이터를 가져 오는 대신 JS 변수 또는 그 밖의 데이터를 찾는 방법은 무엇입니까?

두 번째로 JSON 데이터를 자바 스크립트 변수에 넣기 위해 ASP.NET MVC를 얻는 가장 적합한 방법은 무엇입니까? 나는 이미 내 컨트롤러에 List를 가지고 있으며 JSON으로 JS 변수를 작성한 후에 JS 변수로 가져 오려고합니다.

아니면 현재와 너무 많이 어울리고 jqGrid가 작동하고 싶어하는 AJAX-y 방식을 수락합니까?

감사합니다,

~ 저스틴

답변

4
여기

자바 스크립트 함수를 사용하여있는 jqGrid 트리를 표시하는 방법입니다.

$(document).ready(function() { 
    TreeDemo.setupGrid($("#tree")); 
}); 

TreeDemo = { 
    data: { A: ["A1", "A2"], B: ["B1", "B2"] }, 
    setupGrid: function(grid) { 
     grid.jqGrid({ 
      colNames: ['Name'], 
      colModel: [ 
        { name: 'Name', index: 'Name', width: "250em" } 
       ], 
      datatype: TreeDemo.treeData, 
      loadui: "none", 
      sortname: 'Number', 
      treeGrid: true, 
      treeGridModel: "adjacency", 
      sortorder: "asc" 
     }) 
    }, 
    treeData: function(postdata) { 
     var items = postdata.nodeid ? TreeDemo.data[postdata.nodeid] : TreeDemo.data; 
     var i = 0; 
     var rows = new Array(); 
     for (val in items) { 
      var isLeaf = postdata.nodeid != undefined; 
      rows[i] = { 
       Name: val, 
       Id: val, 
       level: postdata.nodeid ? 1 : 0, 
       parent: postdata.nodeid || null, 
       isLeaf: isLeaf ? "true" : "false", 
       expanded: "false" 
      } 
      i++; 
     } 
     $("#tree")[0].addJSONData({ 
      Total: 1, 
      Page: 1, 
      Records: 2, 
      Rows: rows 
     }); 
    } 
}; 

이 작업을 수행하는 방법에는 여러 가지 옵션이 있으며 예제는 하나뿐입니다.

  1. 페이지로 간단한 스크립트를 방출하는 HTML 도우미를 쓰기 :이 내가 JS의 VAR에 JSON을 얻을 것

    방법 중 하나입니다.

  2. 어떤 이유에서든 데이터를 인라인 할 수없는 경우 파일에 데이터를 가져 오기 위해 JavaScriptResult을 반환하는 작업을 작성하십시오.

.NET JavaScript 직렬 변환기를 사용하여 JSON을 만듭니다. 예제를 보려면 MVC 소스 코드에서 JsonResult.ExecuteResult을보십시오.

+0

JsonResult.ExecuteResult가 ASP.NET 응답 버퍼로 직접 출력되는 것으로 보입니다. 그래서 나는 그것을보기에서 방출되기를 바라는 순간에 그것을 불러야 만 할 것입니다. – RationalGeek

+0

*'JsonResult.ExecuteResult'를 사용하지 마십시오. 필자는 내장 JSON 시리얼 라이저를 사용하는 예제로 사용하기 시작했습니다. 너 자신을 사용하고 문자열로 무엇이든해야한다. –

1

jqGrid documentation wiki의 Data Manipulation 페이지를 참조하십시오. 그리드에 데이터를 공급하는 다양한 방법을 찾을 수 있습니다.