2013-09-16 3 views
0

Мой .cshtml выглядит следующим образом:JqGrid не загружает данные в MVC

<script type="text/javascript"> 
     $(function() { 
      $("#list").jqGrid({ 
       url: '/LogInManagement/DisplayItems/',//this is action in controller which returns the json as result. 
       datatype: 'json', 
       mtype: 'GET', 
       colNames: ['ID', 'Product Name', 'Description', 'IsInStock', 'Attachment'],//column name 
       colModel: [ 
      { name: 'ID', index: 'Id', width: 40, align: 'left' }, 
      { name: 'ProductName', index: 'ProductName', width: 240, align: 'left' }, 
      { name: 'Description', index: 'Description', width: 200, align: 'left' }, 
      { name: 'IsInStock', index: 'IsInStock', width: 40, align: 'left' }, 
      { name: 'Attachment', index: 'Attachment', width: 240, align: 'left' }], 
       pager: jQuery('#pager'), 
       rowNum: 10, 
       rowList: [5, 10, 20, 50], 
       sortname: 'Id', 
       sortorder: "desc", 
       viewrecords: true, 
       caption: 'Items' 
      }); 
     }); 
    </script> 
@{ 
    ViewBag.Title = ViewBag.DisplayName; 
} 

<h2>Welome : @ViewBag.DisplayName</h2> 
<table id="list" class="scroll" cellpadding="0" cellspacing="0"></table> 
<div id="pager" class="scroll" style="text-align:center;"></div> 

Я называю методом "DisplayItems" следующим образом:

public ActionResult DisplayItems() 
    { 
     Item item = new Item(); 
     int pages = 0; 
     var resultItems = Assignment.Models.Item.GetItems().ToArray(); 
     var jsonData = new 
     { 
      total = 1, 
      page = pages, 
      records = resultItems.Count(), 
      rows = resultItems 
     }; 
     return Json(jsonData, JsonRequestBehavior.AllowGet); 
    } 

И это правильно возвращает данные. Но сетка в cshtml показывает «Загрузка ...», но данных нет. Данные поступают следующем формате:

enter image description here

ответ

0

У меня была та же проблема несколько месяцев назад, и я решил проблему путем изменения способа действий, как показано ниже (сохранить файл cshtml, как это),

using System.Web.Script.Serialization; 

    public string DisplayItems() 
     { 
      Item item = new Item(); 

     int pages = 0; 
     var resultItems = Assignment.Models.Item.GetItems().ToArray(); 
     var jsonData = new 
     { 
      total = 1, 
      page = pages, 
      records = resultItems.Count(), 
      rows = resultItems 
     }; 
     JavaScriptSerializer js = new JavaScriptSerializer(); 
     string Serializeddata = js.Serialize(jsonData); 
     return Serializeddata; 
    } 

Обратите внимание на тип возврата string, и я использую JavaScriptSerializer, чтобы вернуть строку. Сообщите мне, если это сработает для вас. Приветствия.

+0

Спасибо @Athiban, но, к сожалению, он даже не работал ... –

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