ASP.NET MVC 3 jqGrid:grid在浏览器中呈现json数据

时间:2012-04-23 18:05:34

标签: json asp.net-mvc-3 jqgrid

我在ASP.net MVC 3中渲染jqGrid时遇到问题。 ProductInfo操作的职责是显示产品列表以及其他最新产品信息(在ProductInfo视图中)。当用户点击任何产品链接时,ProductModelList操作会获取所选产品的所有模型库&将其传递给 ProductModelList视图,其中写入了所有jqGrid代码。但它在浏览器中呈现行json数据,如下所示

{“total”:null,“page”:null,“records”:9,“rows”:[{“id”:4,“cell”:[“3”,“Hyundai Accent”]}, {“id”:5,“cell”:[“3”,“Hyundai Santro”]},{“id”:6,“cell”:[“3”,“Hyundai Santa Fe”]},{“id “:7,”cell“:[”3“,”Hyundai i10“]},{”id“:8,”cell“:[”3“,”Hyundai i20“]},{”id“:9, “cell”:[“3”,“Hyundai Tucson”]},{“id”:10,“cell”:[“3”,“Hyundai Verna Fluidic”]},{“id”:11,“cell” :[“3”,“Hyundai EON”]},{“id”:12,“cell”:[“3”,“New Hyundai Sonata”]}}

以下是控制器和视图:

public class Product : Controller
    {
        **//used to view product list**
        public ActionResult ProductInfo()
        {
            ViewBag.ModelNameList = ModelRepository.GetModelName();
            ViewBag.ModelVersionNameList = ModelVersionRepository.GetModelVersionName();
            return View(new NewCarSearchContainer());
        }
        **//used to view modellist using jgGrid**
        public JsonResult ProductModelList(int brandId, string sidx, string sord, int? page, int? rows)
        {


            var result = new
            {
                total = (ModelRepository.GetModelByBrandId(brandId).Count() + rows - 1) / rows,
                page = page,
                records = ModelRepository.GetModelByBrandId(brandId).Count(),
                rows = (from model in ModelRepository.GetModelByBrandId(brandId)
                       select new
                       {
                           id = model.ModelId,
                           cell = new string[] { model.BrandId.ToString(), model.ModelName }
                       }).ToList()
            };

            return Json(result, JsonRequestBehavior.AllowGet);

        }
}


ProductModelList View:
=====================


<table id="jqgProducts">
</table>
<div id="jqgpProducts">
</div>

<script type="text/javascript">

    $(document).ready(function () {
        $('#jqgProducts').jqGrid({
            //url from wich data should be requested
            url: '/Product/ProductModelList',
            //type of data
            datatype: 'json',
            //url access method type
            mtype: 'GET',
            //columns names
            colNames: ['id', 'ModelId', 'BrandName'],
            //columns model
            colModel: [
                            { name: 'id', index: 'id', width: 40, align: 'left' },
                            { name: 'ModelId', index: 'ModelId', width: 40, align: 'left' },
                            { name: 'BrandName', index: 'BrandName', width: 40, align: 'left' },
                          ],
            //pager for grid
            pager: $('#jqgpProducts'),
            //number of rows per page
            rowNum: 10,
            //initial sorting column
            sortname: 'ModelId',
            //initial sorting direction
            sortorder: 'asc',
            //we want to display total records count
            viewrecords: true,
            //grid height
            height: '100%'
        });
    });
</script>

请指导我?

谢谢,

1 个答案:

答案 0 :(得分:0)

来自JSON数据的'id'将用于分配网格行的id属性(id元素的<tr>。页面上的ID 必须是唯一的。您当前的所有数据都包含相同的ID(id = 3)。

我建议您下载一些有用的示例(请参阅the answerthis one)并根据您的要求进行修改。