为啥jqGrid不会加载?

Posted

技术标签:

【中文标题】为啥jqGrid不会加载?【英文标题】:why jqGrid wont load?为什么jqGrid不会加载? 【发布时间】:2017-01-27 09:33:37 【问题描述】:

我对@9​​87654323@ 枢轴版本有以下设置,这是从code for pivot 中提取的,但是运行时它给出了javascript 错误

SCRIPT5007:无法获取未定义或 null 的属性“长度” 参考 jquery.jqGrid.min.js,第 504 行字符 98

我该如何解决这个问题?

数据来自json,来自C#

这是我的 MVC 操作

   [AllowAnonymous]
    [HttpGet]
    public JsonResult GetProducts() 

        var coll = new List<SampleProductModel>();

        //"CategoryName":"Beverages","ProductName":"Steeleye Stout","Country":"UK","Price":"1008.0000","Quantity":"65"
        var p1 = new SampleProductModel  CategoryName = "Beverages", ProductName = "Steeleye Stout", Country = "UK", Price = "1008.0000", Quantity = "65" ;
        coll.Add(p1);


        //"CategoryName":"Beverages","ProductName":"Steeleye Stout","Country":"UK","Price":"1008.0000","Quantity":"65"
        var p2 = new SampleProductModel  CategoryName = "Beverages", ProductName = "Big John", Country = "UK", Price = "1008.0000", Quantity = "65" ;
        coll.Add(p2);

        //"CategoryName":"Beverages","ProductName":"Laughing Lumberjack Lager","Country":"USA","Price":"140.0000","Quantity":"10",
        var p3 = new SampleProductModel  CategoryName = "Beverages", ProductName = "Laughing Lumberjack Lager", Country = "USA", Price = "140.0000", Quantity = "10" ;
        coll.Add(p3);


        //"CategoryName":"Beverages","ProductName":"Laughing Lumberjack Lager","Country":"USA","Price":"140.0000","Quantity":"10",
        var p4 = new SampleProductModel  CategoryName = "Beverages", ProductName = "Jims", Country = "USA", Price = "140.0000", Quantity = "10" ;
        coll.Add(p4);

        return Json(coll, JsonRequestBehavior.AllowGet);
    

这是我从上述链接中提取并修改为获取 C# json 数据的代码

<!DOCTYPE html>
<html>
<head lang="en">

    <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/start/jquery-ui.css" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqgrid/4.6.0/css/ui.jqgrid.css" />
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jqgrid/4.6.0/js/jquery.jqGrid.min.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jqgrid/4.6.0/js/i18n/grid.locale-en.js"></script>
    <script>

            jQuery(document).ready(function() 
                jQuery("#grid").jqGrid('jqPivot',
                        "http://localhost:53721/Home/GetProducts",
                        // pivot options
                        
                            xDimension : [
                                dataName: 'CategoryName', label : 'Category', width: 90,
                                dataName: 'ProductName', label : 'Product', width:90
                            ],
                            yDimension : [
                                dataName: 'Country'
                            ],
                            aggregates : [
                                member : 'Price', aggregator : 'sum', width:50, label:'Sum',
                                member : 'Quantity', aggregator : 'sum', width:50, label:'Qty'
                            ],
                            rowTotals: true,
                            colTotals : true

                        ,
                        // grid options
                        
                            width: 700,
                            rowNum : 10,
                            pager: "#pager",
                            caption: "Amounts and quantity by category and product"
                        );
            )
    </script>
</head>
<body>

<table id="grid"></table>
<div id="pager"></div>

</body>
</html>

【问题讨论】:

您尝试从53721 端口加载数据,如果它与加载HTML 页面的端口不同,它将无法正常工作。见the same origin policy。此外,您永远不应该在jquery.jqGrid.min.js 中发布错误。您应该改用jquery.jqGrid.src.js 版本重新进行测试并发布相应的错误消息。您应该在jquery.jqGrid.min.js(或jquery.jqGrid.src.js)之前包含grid.locale-en.js 【参考方案1】:

对 jqgrid 不太了解,但我怀疑您拥有的 jquery 和 jqgrid 版本可能不兼容。所以我查了一下,你的 jqgrid 版本似乎是 4.6.0 版本,而最新版本似乎是 5.0.2 :

http://www.trirand.com/jqgridwiki/doku.php

所以也许尝试更新它?

http://www.trirand.com/blog/?page_id=6

【讨论】:

我正在使用 gurrido 拥有的 4.6 之后的免费版本,该版本不是免费的 @Oleg hi oleg 我知道你不是这个帖子的一部分,但我知道你目前正在维护 jqgrid 免费版本,所以你好心告诉我如何解决这个问题? @ANP:我只是偶然阅读了您的最后一条评论。仅当您将评论发布到我的旧答案或我之前写过 我的评论 的某个帖子时,我才会收到通知。您可以在here 中搜索“Oleg”,您将看到 54 个具有相同名称的用户的页面。如果不存在其他信息(我的回答或评论),Stackovrflow 无法解析名称。

以上是关于为啥jqGrid不会加载?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 JQGrid 无法显示数据?

jQgrid“loadComplete”事件仅在第一次加载时才被调用

为啥在 GridUnload 之后 free-jqgrid 不重置行 ID?

如何在jqgrid分组中保留展开/折叠状态?

jqgrid json不加载数据

如何在网格内容加载时隐藏jqgrid标头?