возвращение данных JSON из контроллера - PullRequest
2 голосов
/ 25 февраля 2010

Моя Колмодель в javascript выглядит так

jQuery("#testGrid").jqGrid(

//Some code

colModel: [
 { name: 'field1',index: 'field1', width: 113, align: 'Center', formatter: selectCheckboxFormatter, sortable: false },
{ name: 'field2', index: 'field2', width: 113, align: 'Center' },
{ name: 'field3', index: 'field3', width: 120, align: 'left' }
];

)

и мой javascript для источника данных выглядят следующим образом. Я вызываю эту функцию в какой-то момент в моем JavaScript, чтобы заполнить сетку.

function PopulateDummyData() {
var mydata = [
{ field1: "Yes", field2: "1", field3: "54555464"},
{ field1: "No", field2: "2", field3: "54555464"},
];
}

но я хочу получить данные в вышеуказанной функции из кода контроллера, чтобы действие контроллера возвращало данные JSON в указанном выше формате, которые я могу использовать для заполнения своей сетки. и код контроллера будет вызываться действием URL-адреса сетки с использованием следующего фрагмента кода в javascript.

url: UrlAction ('MyController', 'PopulateDummyData').

Но я не уверен, каким должен быть код контроллера? какие-либо мысли или комментарии ??

Ответы [ 2 ]

2 голосов
/ 25 февраля 2010

Из некоторый блог :

public JsonResult GetStateList() {
  var list = new List<ListItem>() {
    new ListItem() { Value = "1", Text = "VA" },
    new ListItem() { Value = "2", Text = "MD" },
    new ListItem() { Value = "3", Text = "DC" }
  };
  return this.Json(list);
}
0 голосов
/ 25 февраля 2010

Посмотрите документацию jqGrid о том, как загрузить из источника AJAX. вот как я это сделал, получая данные от httphandler

jQuery("#list").jqGrid({
            url: 'example.ashx', //this url points to where the data comes from
            datatype: 'xml',  //this is the data type, can be JSON etc etc              
            mtype: 'GET',
            colNames: ['Name', 'Email', 'Archive'],
            colModel: [
            { name: 'Name', index: 'Name', width: 200,editable:true},
            { name: 'Email', index: 'Email', width: 250, editable: true },
            { name: 'Archive', index: 'Archive', width: 80, align: 'center', editable: true, formatter: 'checkbox', edittype: "checkbox",value: "True:False" }
            ],
            pager: jQuery('#pager'),
            rowNum: 5,
            rowList: [5,10,15,20],
            sortname: 'id',
            sortorder: "desc",
            viewrecords: true,
            imgpath: '/jqGrid-3.5.alfa/themes/lightness/images',
            caption: 'My first grid'
        }).navGrid("#pager", { edit: false, add: false, del: false,refresh:false,search:false });
    });

тогда мой код httphandler выглядит как

public String GenerateGrid (контекст HttpContext, список lstData) { context.Response.ContentType = "text / xml; charset = utf-8"; string xml = "" + page + "+ totalpages +" "+" "+ count +" ";

    List<customObject> temp = lstData.Skip((page - 1) * limit).Take(limit).ToList();

    foreach (var tempOBJ in temp)
    {
        xml += "<row id='" + tempOBJ.id+ "'>";
        xml += "<cell>" + tempOBJ.name+ "</cell>";
        xml += "<cell>" + tempOBJ.lastname + "</cell>";
        xml += "<cell>" + tempOBJ.email + "</cell>";
        xml += "</row>";
    }
    xml += "</rows>";

    return xml;
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...