2010-11-29 9 views
1

ASP.NET MVC 2 응용 프로그램을 개발 중입니다. 개체 데이터 목록의 gird를 보여주고 싶습니다. List<MyObject>입니다. 그래서 나는 컨트롤러 액션에서 코드를 다음과 같이 시도했다.jqgrid with asp.net MVC

[HttpGet] 
public ActionResult JsonSalesCollection() 
{ 
    string id = Request.QueryString["id"]; 

    ViewData["TrustId"] = id; 
    Guid id1 = new Guid(id); 

    List<TrustContract> contractList = trustContractmang.GetListOfTrustContractByTrustId(id1); 
    int pageIndex = 12; 
    int pageSize = 20; 
    int totalRecords = contractList.Count(); 
    int totalPages = (int)Math.Ceiling((float)totalRecords/(float)pageSize); 
    string orderBy = string.Format("{0} {1}", "TrustContracId", "desc"); 

    var jsonData = new 
    { 
     total = totalPages, 
     page = 20, 
     records = totalRecords, 
     rows = (
      from s in contractList 
      select new 
      { 
       i = s.TrustContracId, 
       cell = new string[] { 
        s.TrustContracId.ToString(), 
        s.Trust.TrustName.ToString(), 
        s.ContractStartDate.ToShortDateString(), 
        s.ContractEndDate.ToShortDateString(), 
        s.ContractAmount.ToString(), 
        s.RecoveredAmount.ToString(), 
        s.IsCompleted.ToString() 
       } 
      }).ToArray() 
    }; 

    return Json(jsonData); 
} 

이것은 잘 실행되고 있으며 JSON 결과도 생성 중이다. 이를 위해 내가 사용,

var gridimgpath = '/Scripts/jqgrid/themes/redmond/images'; 

var TrustId = <%= serializer.Serialize(ViewData["TrustId"]) %>; 

// use date.js to calculate the values for this month 
var gridDataUrl = '/NewTrustContract/JsonSalesCollection?id='+ TrustId; 

$("#list").jqGrid({ 
    url: gridDataUrl, 
    datatype: "json", 
    mtype: 'GET', 

    colNames: ['TrustContracId', 'Trust', 'Contract Start Date', 
       'Contract End Date', 'Contract Amount', 'Recovered Amount', 
       'Is Completed'], 
    colModel: [ 
     { name: 'TrustContracId', index: 'TrustContracId', width: 50, align: 'left' }, 
     { name: 'Trust', index: 'Trust', width: 100, align: 'left' }, 
     { name: 'ContractStartDate', index: 'ContractStartDate', width: 100, align: 'left' }, 
     { name: 'ContractEndDate', index: 'ContractEndDate', width: 100, align: 'left' }, 
     { name: 'ContractAmount', index: 'ContractAmount', width: 100, align: 'left' }, 
     { name: 'RecoveredAmount', index: 'RecoveredAmount', width: 100, align: 'right' }, 
     { name: 'IsCompleted', index: 'IsCompleted', width: 100, align: 'right' } 
    ], 
    rowNum: 20, 
    rowList: [10, 20, 30], 
    imgpath: gridimgpath, 
    height: 'auto', 
    width: '900', 
    pager: jQuery('#pager'), 
    sortname: 'TrustContracId', 
    viewrecords: true, 
    sortorder: "desc", 
    caption: "Contract" 
}); 

확인 :보기 페이지에서 내가 스크립트를 사용하고

< table id="list" class="scroll" cellpadding="0" cellspacing="0" ></table> 
< div id="pager" class="scroll" style="text-align:center;" ></div> 

도 뷰에서 .aspx 페이지에 빈 그리드 뷰를 볼 수있는 grid.I를 개최. 데이터는 나타나지 않습니다. 그래서 jquery에서 JSON 데이터를 수동으로 반복해야한다는 것을 의미합니다. 그렇다면 j 쿼리에서 JSON 데이터를 가져올 수 있습니다. 그리고 iterate하는 방법. 나는 onli $.each가 반복 데이터에 사용된다는 것을 안다. var에서 데이터를 얻는 방법은 무엇입니까? 또는이 기능에 대한 다른 해결책은 무엇입니까?

어디에서 jqgrid 간단한 설명서를 읽어야합니까?

답변

0

약간의 방법입니다. 이 성공을 위해서는 ActionResult 대신 JsonResult을 사용해야합니다. 또한 액션 정의 앞에 [AcceptVerbs(HttpVerbs.Get)] 속성을 추가해야합니다. 그리고 돌아 왔을 때 나는 사용했다.

return Json(jsonData,JsonRequestBehavior.AllowGet); 

그것은 지금 벌금을 부과하고있다.