从控制器返回json数据

时间:2010-02-24 21:35:18

标签: asp.net-mvc jqgrid

我在javascript中的Colmodel看起来像这样

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数据,我可以使用它来填充网格。并使用javascript中的以下代码片段,通过网格的URL操作调用控制器代码。

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

但我不确定控制器代码应该如何?任何想法或评论??

2 个答案:

答案 0 :(得分:2)

来自some blog

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);
}

答案 1 :(得分:0)

查看有关如何从AJAX源加载的jqGrid文档。 这就是我从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 context,List 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;
}