2013-11-29 2 views
-1

У меня есть следующий метод в контроллере, который я вызываю из своего представления, чтобы заполнить jqgrid. Этот метод отлично работает и возвращает данные.Как связать объект JsonResult с jqgrid?

public JsonResult _FirstLook() 
{ 
    HttpResponseMessage response; 

    response = client.GetAsync("api/CasoAdverso").Result; 
    if (response.IsSuccessStatusCode) 
     { 
      IEnumerable<CasoAdverso> list = response.Content.ReadAsAsync<IEnumerable<CasoAdverso>>().Result; 

      return Json(list); 
     } 
} 

Если я отлаживаю то, что возвращается, структура будет похожа на изображение ниже. Перечень объектов в данных:

enter image description here

Я обобщать класс CasoAdverso, потому что это довольно большой для сдачи его здесь:

public class CasoAdverso 
{ 
    public int CAAD_Id { get; set; } 
    public string CAAD_Id_Local { get; set; } 
    public System.DateTime? CAAD_Fecha_Contacto { get; set; } 
} 

jqgrid фактически получает данные для заполнения, но как-то не отображается:

$(grid_selector).jqGrid({ 
datatype: "json", 
height: 250, 
mType: 'GET', 
url: "@Url.Action("_FirstLook", "CasoAdversoForm")", 
colNames: ['ID', 'ID Caso', 'Fecha Contacto Notif.'], 
     colModel: [ 
      { name: 'CAAD_Id', index: 'CAAD_Id', key: true }, 
      { name: 'CAAD_ID_Local', index: 'CAAD_ID_Local', width: 60, editable: false }, 
      { name: 'CAAD_Fecha_Contacto', index: 'CAAD_Fecha_Contacto', width: 90, editable: false, sorttype: "date", unformat: pickDate }, 
     ], 
    ... 
     }, 

Я знаю, что решение может прийти через jsonReader в jqgrid, но я не мог сделать любой р rogress без полного изменения моего метода _FirstLook в контроллере.

В моем сценарии мне нужно будет изменить jqgrid, чтобы связать то, что я сейчас получаю от контроллера. Было бы неплохо, если бы не было необходимости обходного пути в контроллере, чтобы дать jqgrid то, что ему нужно по умолчанию.

+0

Укажите «bind»: что такое поведение ожидания? Чем он отличается от фактического поведения? – Saturnix

+0

В этом случае привязка будет устанавливать jsonReader, который будет «связывать» структуру, которую сетка ожидает со структурой объекта JsonResult. Ожидаемое поведение будет заполняться и отображаться, но этого не происходит ... – Javier

+0

Здесь приведен пример jsonreader: http://stackoverflow.com/questions/14748169/jqgrid-jsonreader-configuration – Javier

ответ

2

Я полагаю, что основная причина описанной проблемы не является «обязательной». Вы используете опцию mType: 'GET', которая будет проигнорирована, поскольку опция с именем mType не существует. Таким образом, будет использоваться значение по умолчанию mtype: 'GET' (mtype вместо mtype). Таким образом, вы должны использовать либо mtype: 'POST' или замените строку

return Json(list); 

в

return Json(list, JsonRequestBehavior.AllowGet); 

Кроме того, я бы порекомендовал вам проверить, что вы используете loadonce: true вариант, потому что вы не реализованы на стороне сервера подкачки в коде сервера , Я рекомендую вам дополнительно использовать gridview: true, autoencode: true и подумайте о том, чтобы использовать height: "auto" вместо height: 250.

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