2013-11-04 3 views
0

검색 결과에 따라 동적 JSON 데이터를로드하려고하는 JQGrid가 있습니다. 내 문제는 올바른 형식으로 JSON 문자열을 가져올 수 없다는 것입니다. 여기 JQGrid 동적 데이터로드 (JSON)

내 코드입니다 :

public ActionResult GridData(string sidx, string sord, int page, int rows) 
    { 

     DataSet data = (DataSet) TempData["temp"]; 


     //var rowdata = GetJson(data.Tables[0]); 
     var jsonData = new 
     { 
      total = data.Tables[0].Rows.Count, 
      page = page, 
      records = data.Tables[0].Rows.Count, 
      rows = GetJson(data.Tables[0]) 
     }; 
     var a = Json(jsonData, JsonRequestBehavior.AllowGet); 
     return a; 

    } 

    public string GetJson(DataTable dt) 
    { 
     System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
     List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>(); 
     Dictionary<string, object> row = null; 

     foreach (DataRow dr in dt.Rows) 
     { 
      row = new Dictionary<string, object>(); 
      foreach (DataColumn col in dt.Columns) 
      { 
       row.Add(col.ColumnName, dr[col]); 
      } 
      rows.Add(row); 
     } 
     return serializer.Serialize(rows); 
    } 

} 

내보기 :

<script type="text/javascript"> 
jQuery(document).ready(function(){ 
    jQuery("#list").jqGrid({ 
    url:'/Search/GridData/', 
    datatype: 'json', 
    mtype: 'GET', 
    colNames: @Html.Raw(formatColNames()), 
    colModel:@Html.Raw(formatColModel()), 
    pager: jQuery('#pager'), 
    rowNum:10, 
    rowList:[5,10,20,50], 
    viewrecords: true, 
    caption: 'My first grid' 
    }); 
}); 
내가의 형태 (SQL 서버에서 내가 다시 받고 있어요 데이터를 사용할 수있는 방법

DataSet)을 만들고 그리드에로드합니다. 열의 서식이 올바르게 지정되었다고 가정합니다. 나는 JSONLint를 검사했고 json은 확실히 유효하지 않지만 어떻게 수정해야할지 모르겠다.

미리 감사드립니다.

답변

1

행 데이터를 두 번 직렬화하는 것으로 보입니다. 일단 GetJson 함수에 들어가면 Json 결과가 만들어집니다.

List<Dictionary<string, object>>을 GetJson 함수에서 반환하고 Json(jsonData)이 serialize하도록하십시오.

+0

빠른 수정 주셔서 감사합니다. 나는 하루 종일 코드를보고있었습니다. :) –