再次使用ASP.NET MVC3的jqGrid?

时间:2011-11-25 08:11:21

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

我以为我已经对这个东西进行了排序,但是我尝试在我的另一个应用程序中使用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>

2 个答案:

答案 0 :(得分:1)

您的代码中存在一些错误:

  • 如果您使用jsonReader: { repeatitems: false }的格式rows{id, cell}属性为cell,那么您应该从jqGrid定义中删除jquery-ui-1.8.15.min.js参数字符串数组。
  • 您应该只包含每个JavaScript文件一次。目前,您同时包含jquery-ui-1.8.16.custom.min.jsjquery-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"表示在具有pager的页面上选择DOM元素,并为DOM元素创建jQuery包装器。 jqGrid需要知道只有寻呼机的ID 。因此,如果id参数的值不是字符串和jQuery元素而是jqGrid,则只从元素中获取pager属性,并将'#' + id参数的值修改为字符串{{1} }。最好直接以`pager:“#pager”形式使用pager参数。
  • 我建议您查看the answer的更新部分。它包含将错误消息转发到jqGrid的代码,在使用带有ASP.NET MVC 2或3的jqGrid的情况下修复一些CSS问题,并展示如何在Entity Framework的情况下使用数据分页,排序和过滤。所以它对你来说很有意思。您可以从答案的“更新2”(最后)链接下载演示项目。

答案 1 :(得分:0)

感谢您的投入。事实证明我犯了一个错误。我调用的是type而不是mtype,而jqGrid对我指定的Url什么都没做。一旦我纠正它,它现在工作正常。

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