【问题标题】:ASP.NET MVC 3 jqGrid : grid renders json data in browserASP.NET MVC 3 jqGrid:网格在浏览器中呈现 json 数据
【发布时间】:2012-04-23 18:05:33
【问题描述】:

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

{"total":null,"page":null,"records":9,"rows":[{"id":4,"cell":["3","Hyundai Accent"]}, {"id":5,"cell":["3","现代 Santro"]},{"id":6,"cell":["3","现代圣达菲"]},{"id ":7,"cell":["3","现代 i10"]},{"id":8,"cell":["3","现代 i20"]},{"id":9, "cell":["3","现代途胜"]},{"id":10,"cell":["3","现代 Verna Fluidic"]},{"id":11,"cell" :["3","现代 EON"]},{"id":12,"cell":["3","新现代奏鸣曲"]}]}

以下是控制器和视图:

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>

请指导我?

谢谢,

保罗

【问题讨论】:

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


    【解决方案1】:

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

    我建议您下载一些工作示例(参见the answerthis one)并根据您的要求进行修改。

    【讨论】:

    • 奥列格,感谢您的回复。我可以找出问题所在。我在产品控制器中有 [product] 控制器和两个动作 [productlist] 和 [models]。 [ProductList] Action 在 ProductListView 中显示产品列表。在 ProductListView 中,当单击任何产品链接时,它会调用 [product] 控制器的 [models] 操作。在 [modelsview] load 中写入了所有 jqGrid 代码。我认为当我重定向它时,它会在浏览器中显示行 json 数据。如果我在一个视图中完成所有事情,它工作正常吗?请在从一个视图重定向到另一个视图时指导我如何在第二个中填充 jqGrid?
    • @Paul:如果我理解你是正确的,你应该打开你在问题文本中发布的视图。 vie 应该包含空的&lt;table&gt; 和寻呼机&lt;div&gt;。此外,应在视图上加载 JavaScript,将 &lt;table&gt;&lt;div&gt; 转换为网格,并用 '@Url.Action("Models")' 返回的 JSON 数据填充它。我不确定,但可能一个 页面有两个网格会更好:一个包含产品,另一个包含产品详细信息。说实话我不明白你想做什么,但这听起来不像你问的主要问题
    • Oleg,假设我有两个 View(ProductInfo,ProductModelList) 并且都属于一个控制器产品。 ProductInfo 视图包含产品列表以及产品的其他最新消息。如果用户单击任何产品(超链接),我想将用户重定向到 ProductModelList 视图以显示该产品的所有型号。我不能将这两个视图合二为一,因为这两个视图都包含除列表之外的其他有价值的信息(其中一些是静态的)。我已经编写了所有代码来根据产品控制器的 ProductModelList 操作中的 productid 获取模型列表。我使用 RAZOR 作为视图引擎。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 2016-01-14
    • 2011-11-26
    • 1970-01-01
    相关资源
    最近更新 更多