2010-07-02 3 views
1

Это сводит меня ума, так что любая помощь будет удивительным:не jgGrid отображения данных JSon

Мой HTML выглядит следующим образом:

<asp:Content ID="Content3" ContentPlaceHolderID="Content" runat="server" class="MainLoginScreen"> 
     <table id="StudyTable"></table> 
     <div id="StudiesPager"></div> 
</asp:Content> 

Мой браузер следующим образом:

<script language="javascript" type="text/javascript"> 
     $(document).ready(function() { 
      $("#StudyTable").jqGrid({ 
       url: '/StudyManager/GetStudyTable.aspx', 
       datatype: "json", 
       mtype:"GET", 
       colNames: ['Name', 'URL', 'Creation Date', 'Description', 'Status'], 
       colModel:[ 
        { name: 'Name', width: 200}, 
        { name: 'URL', width: 100 }, 
        { name: 'Creation_Date', width: 300}, 
        { name: 'Description', width: 200 }, 
        { name: 'Status', width: 200} 
       ], 
      rowNum:10, 
      rowList:[10,20,30], 
      viewrecords: true, 
      sortname: 'Name', 
      sortorder: "asc", 
      pager: $('#StudiesPager'), 
      imgpath: '/Content/Images', 
      jsonReader: { 
       root: "rows", 
       page: "page", 
       total: "total", 
       records: "records", 
       repeatitems: true, 
       cell: "cell", 
       id: "id" 
      }, 
      width: 800, 
      height: 400 
      }); 
     }); 
    </script> 

и мой код cs:

protected void Page_Load(object sender, EventArgs e) 
     { 
      StringBuilder sb = new StringBuilder(); 
      sb.Append("{'total':1,"); 
      sb.Append("'page':'1',"); 
      sb.Append("'records':'1',"); 
      sb.Append("'rows': ["); 
      sb.Append("{ 'id':'123', 'cell':['abc','abc','abc','abc','abc']}"); 
      sb.Append("]}"); 

      Response.Clear(); 
      Response.StatusCode = 200; 
      Response.Write(sb.ToString()); 
      Response.End(); 
     } 

Таблица и пейджер отображаются отлично, но данные не отображаются в таблице. Возвращенные из моей JSON сСта, кажется, в правильном формате:

{'total':1,'page':'1','records':'1','rows': [{ 'id':'123', 'cell'['abc','abc','abc','abc','abc']}]} 

Но никаких данных не отображаются в сетке.

+1

Вместо ручной сериализации JSON вам лучше использовать некоторый стандартный сериализатор: например, ScriptSerializer.Serialize или DataContractJsonSerializer.WriteObject. Вы также можете использовать Json.net с http://json.codeplex.com/. – Oleg

ответ

1

Из-за всего, что может вызвать проблему - это были отдельные цитаты. JSON, похоже, не позволяет «слово», а скорее нуждается в «слове».

Так выход JSON из сСт должны быть:

{"total":"1","page":"1","records":"1","rows": [{ "id":"123", "cell"["abc","abc","abc","abc","abc"]}]} 
+1

Правильно только двойная цитата поддерживается JSON (см. Http://www.json.org/). Вы можете проверить свои данные JSON на http://www.jsonlint.com/. – Oleg

Смежные вопросы