2014-11-06 2 views
2

Привет, у меня есть простой actinReault, который возвращает jsonResult. Следующий метод.jqGrid не загружает данные

[HttpPost] 
    public JsonResult AllEmployees() 
    { 
     EmployeeService employeeService = new EmployeeService(); 
     List<EmployeeViewModel> employeesViewMod = employeeService.allEmployee(); 
     var AllEmpObjects= JsonConvert.SerializeObject(employeesViewMod); 
     return Json(AllEmpObjects); 
    } 

можно отлаживать и просматривать данные о AllEmpObjects которого поступает форма DB

"[{\" FirstName \ ": \" Shuvo \ "\ "LastName \": \" Ahmed \ ", \" Address1 \ ": \" 110, uttra \ ", \" Address2 \ ": \" mymansing \ ", \" HomePhone \ ": 1234, \" MobileNo \ ": 2345, \" Email \ " : \ "[email protected] \", \ "Добролюбов \": \ "10/01/1977 \", \ "StartDate \": \ "2013-10-01T00: 00: 00 \", \ "InitialSalary \ ": 0, \" AccHolderName \ ": нулевой, \" BankName \ ": \" барахоловка \», \ "Поздний \": \ "uttra \", \ "AccountNo \": 1234567890 \ "PositionDDLId \" : 0, \ "MarriageStatDDLId \": 0, \ "PositionIdString \": \ "Md \", \ "MarriageIdString \": \ "Married \"}]

Мой файл JS, который отвечает, чтобы показать данные с помощью jqGrid:

function allEmployeeFunc() { 
    $("#list").jqGrid({ 

      url: "/Employee/AllEmployees", 
      datatype: "json", 
      mtype: "POST", 
     colNames: ["First name", "Last Name", "phone", "Mobile", "Email", "status"], 

     colModel: [ 
     { name: "FirstName", width: 55 }, 
     { name: "LastName", width: 90 }, 
     { name: "HomePhone", width: 80, align: "right" }, 
     { name: "MobileNo", width: 80, align: "right" }, 
     { name: "Email", width: 80, align: "right" }, 
     { name: "MarriageIdString", width: 150, sortable: false } 
    ], 
     pager: "#pager", 
     rowNum: 10, 
     rowList: [10, 20, 30], 
     sortname: "invid", 
     sortorder: "desc", 
     viewrecords: true, 
     gridview: true, 
     autoencode: true, 
     caption: "Detail of all EMPLOYEE", 
}); 

}

к сожалению, нет данных о выходе, но появится сетка с пустыми внутри. может ли кто-нибудь помочь?

ответ

3

Вы должны удалить строку

var AllEmpObjects= JsonConvert.SerializeObject(employeesViewMod); 

из кода и заменить return Json(AllEmpObjects); на

return Json(employeesViewMod); 
+0

Уважаемый @Oleg спасибо много матовые. Работа выполнена. не могли бы вы объяснить, почему мне не нужно сериализовать здесь. без json-преобразования, как я написал «return Json (employeesViewMod);». но employeeViewMod пока не преобразован json. обычно, когда я получаю данные через AJAX, я конвертирую данные/объект в jason сначала в контроллер и json.parse в JS-файл и использую данные/объект. Еще раз спасибо за помощь. – Cloud

+0

@Cloud: Добро пожаловать! 'return Json (employeesViewMod);' уже конвертировать объект в строку, имеющую формат JSON. Проблема состоит в том, что можно также преобразовывать не-объекты JSON: целые числа, булевы и строки. Если вы конвертируете строку в JSON, тогда все '' 'и' \ 'будут экранированы (см. [Здесь] (http://www.json.org/)). Таким образом, вы получаете строку' [{\ "FirstName \" : \ "shuvo \", ...}] 'вместо строки' [{"FirstName": "shuvo", ...}] '. Затем на стороне клиента строка будет десериализована до ** строки ** вместо ** объекта **. Поэтому jqGrid не может считывать данные, потому что ожидает объект (массив элементов). – Oleg

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