【问题标题】:jqGrid with ASP.NET MVC3 again?再次使用 ASP.NET MVC3 的 jqGrid?
【发布时间】:2011-11-26 02:11:32
【问题描述】:

我以为我已经解决了这个问题,但我尝试在我的另一个应用程序中使用 jqGrid,但它不想工作。它甚至不会转到提到的 URL。它甚至不会显示空记录字符串,只是一个空网格。
这就是我在视图中所拥有的

$("#list").jqGrid({
            url: '/Customers/MyAccount/GetEnhancementRequests',
            datatype: 'json',
            type: 'POST',
            colNames: ['ID', 'Requested By', 'Requested Date', 'Details', 'Progress'],
            colModel: [
            { name: 'Id', index: 'ID', key: true, width: 55 },
            { name: 'CustomerName', index: 'CustomerName', width: 50 },
            { name: 'requestDate', index: 'requestDate', width: 50 },
            { name: 'details', index: 'details', width: 50 },
            { name: 'progress', index: 'progress', width: 50 }
            ],
            pager: $("#pager"),
            rowNum: 2,
            rowList: [2, 10, 50, 100, 200],
            sortname: 'ID',
            viewrecords: true,
            sortorder: 'desc',
            caption: 'Enhancement Requests',
            imgpath: '/Content/images',
            width: 1000,
            height: 500,
            emptyrecords: 'No enhancements have been submitted',
            jsonReader: { repeatitems: false }
        });


        $("#list").jqGrid('navGrid', '#pager',
         { edit: false, add: false, del: false },
         {},
         {},
         {},
         { multipleSearch: true, multipleGroup: true }
         );

我已经将我的控制器操作更改为这样

[HttpPost]
public JsonResult GetEnhancementRequests(string sidx, string sord, int page, int rows, bool _search, string filters) 
        {
            var jsonData = new
            {
                total = 1,
                page = page,
                records = 1,
                rows = (
                     new { 
                         id = 1,
                         cell = new string[]{
                            "1", "RequestedBy", DateTime.Now.ToShortDateString(), "Lots of details", "and even some progress"}                        
                     })
            };
            return Json(jsonData );  
        }

我在控制器动作中有断点,但它甚至没有进入方法。有什么见解吗?

编辑:忘了补充,我有以下脚本参考。如你所见,我已经得到了所有的 req 文件

<link href="../../../../Scripts/css/custom-theme/jquery-ui-1.8.16.custom.css" rel="stylesheet" type="text/css" />
<link href="../../../../Scripts/css/ui.jqgrid.css" rel="stylesheet" type="text/css" />
<link href="../../../../Scripts/ui.multiselect.css" rel="stylesheet" type="text/css" />

<script src="../../../../Scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="../../../../Scripts/jquery-ui-1.8.15.min.js" type="text/javascript"></script>
<script src="../../../../Scripts/jquery-ui-1.8.16.custom.min.js" type="text/javascript"></script>
<script src="../../../../Scripts/grid.locale-en.js" type="text/javascript"></script>
<script src="../../../../Scripts/ui.multiselect.js" type="text/javascript"></script>
<script src="../../../../Scripts/jquery.jqGrid.min.js" type="text/javascript"></script>  
<script src="../../../../Scripts/jquery.tablednd.js" type="text/javascript"></script>

【问题讨论】:

  • 能否请您也从网格请求的 url 中发布一个示例输出?

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


【解决方案1】:

您的代码中有一些错误:

  • 如果您对具有{id, cell} 属性的项目使用rows 格式,其中cell 是字符串数组,则应从jqGrid 定义中删除jsonReader: { repeatitems: false } 参数
  • 您应该将每个 JavaScript 文件只包含一次。目前您包括jquery-ui-1.8.15.min.jsjquery-ui-1.8.16.custom.min.js。您应该删除jquery-ui-1.8.15.min.js。同样,文件jquery.tablednd.js 已经包含在最小化形式的jquery.jqGrid.min.js 中。您应该删除jquery.tablednd.js

其他一些不是错误,只是建议:

  • 参数imgpath 多年以来在jqGrid 中不存在。您可能使用了一些复古示例作为模板。包含参数imgpath: '/Content/images' 与包含blaBla: 'HaHa' 一样:它什么也不做。所以你应该删除imgpath: '/Content/images'
  • 您应该pager: $("#pager") 替换为pager: "#pager"。表达式$("#pager") 表示选择页面上具有id="page" 的DOM 元素并为DOM 元素创建jQuery 包装器。 jqGrid 需要知道寻呼机的唯一ID。因此,如果pager 参数的值不是字符串和jQuery 元素,jqGrid 只需从元素中获取id 属性并将pager 参数的值修改为字符串'#' + id。最好直接以`pager: "#pager"的形式使用pager参数。
  • 我建议您查看the answer 的更新部分。它包含将错误消息转发到 jqGrid 的代码,修复了在 ASP.NET MVC 2 或 3 中使用 jqGrid 时的一些 CSS 问题,并展示了如何在 Entity Framework 的情况下使用数据分页、排序和过滤。所以这对你来说可能很有趣。您可以从答案的“UPDATED 2”(末尾)的链接中下载演示项目。

【讨论】:

    【解决方案2】:

    感谢您的意见。事实证明我错了。我调用的是 type 而不是 mtype,而 jqGrid 对我指定的 Url 没有做任何事情。一旦我纠正了它,它现在工作正常。

    感谢有关 imgpath 和 pager btw 的指点。欣赏它 谢谢

    【讨论】:

      猜你喜欢
      • 2011-08-27
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多