【问题标题】:jqGrid has issues loading subgrid in IE7jqGrid 在 IE7 中加载子网格时出现问题
【发布时间】:2012-05-05 07:47:42
【问题描述】:

我一直在尝试让“Grid as Subgrid”功能正常工作,但运气不佳。我认为我在代码中做错了什么,因为它在独立测试中运行良好。然而,我终于注意到我的应用程序和我的测试页面之间的唯一区别是我的应用程序在 IE7 上运行,而我在 Firefox 中运行我的测试页面。果然,当我在 IE7 中加载测试页面时,我遇到了同样的问题。

在 IE7 上重现该问题的代码如下:

$(function () {
    function loadTasks(subgrid_id, row_id)
    {
        var id = subgrid_id + '_t';
        $('#' + subgrid_id).html('<table id="' + id + '"></table>');
        jQuery("#" + id).jqGrid({
            datatype: 'local',
            colNames: ['No','Item','Qty','Unit'],
            colModel: [
                {name:'num',index:'num',width:80,key:true},
                {name:'item',index:'item',width:130},
                {name:'qty',index:'qty',width:70,align:'right'},
                {name:'unit',index:'unit',width:70,align:'right'}
            ],
            height: '100%'
        });
    }

    var x = $("#grid").jqGrid({
        jsonReader: { root: "rows", repeatitems: false },
        datatype: "json",
        height: 'auto',
        autowidth: true,
        forceFit: true,
        colNames:['ID','Name'],
        colModel:[
            {name:'id', key:true, index:'id', width:60, sorttype:"int", jsonmap:"id"},
            {name:'name', index:'foobar', width:90,  jsonmap: "name"}
        ],

        subGrid: true,
        subGridRowExpanded: loadTasks,
        caption: "Results"
    });

    var jsonData = [
        {id: 1, name: 'Apple'},
        {id: 2, name: 'Banana'},
        {id: 3, name: 'Pear'},
        {id: 4, name: 'Orange'}
    ];

    x[0].addJSONData( { rows: jsonData } );
});

似乎在每一行上创建了一些虚假元素,这些元素在行内无法正确呈现。这是它在 IE7 上如何呈现的屏幕截图:

奇怪的是那些“未定义”行实际上是有效网格行的一部分,如果我将鼠标悬停在“Apple”上,那么第一行 undefined 也会突出显示。

我选择 jqGrid 而不是其他网格的主要原因是它支持嵌套多个网格(我们的应用程序确实需要它),但是我们的公司标准仍然是 IE7,所以我们需要支持这个浏览器。有什么办法可以让这个功能在 IE7 下正常工作吗?

【问题讨论】:

    标签: javascript jquery jqgrid


    【解决方案1】:

    我报告了错误here。问题是the line 中的输入错误,其中使用了+= 而不是=。结果undefined 被添加到具有子网格的每一行。

    这是不典型的,但是 Tony 在我的错误报告后修改了 jqGrid 的代码,并以相同的版本号 4.3.2 将其发布在 the download page。所以有两个不同版本的jqGrid(有bug和没有bug)具有相同的版本号。

    所以要解决这个问题,你应该刷新你使用的 jqGrid 4.3.2。

    更新:我下载了“new jqGrid 4.3.2”的源代码,我很惊讶,因为它不仅包含当前的错误修复,还包含上次在 jqGrid 中完成的许多其他更改时间。顺便说一句,我提出了许多变化。例如,现在可以在搜索对话框中使用自定义控件(请参阅我最近的答案here),可以在搜索对话框中使用searchOnEnter 和closeOnEscape,新的afterChange 回调在那里。英语和德语的语言环境是 fixed。例如,现在它将在grid.locale-en.js 中使用逗号作为thousandsSeparator。这很奇怪,但是grid.locale-en.js和grid.locale-de.js的新版本只放在src\i18n子目录下。子目录js\i18n 包含文件的旧 版本 (???)。我可以继续...

    无论如何我建议大家刷新之前从the download page下载的jqGrid 4.3.2的源码。

    【讨论】:

    • 哦,太棒了!看起来这在几天前就已经修复了。我想我必须自己深入研究这段代码。感谢您最近对 jqGrid 的所有帮助,@Oleg..
    • @MikeChristensen:不客气!我很惊讶,但“新 jqGrid 4.3.2”版本包含许多新功能(请参阅我回答的“更新”部分)。
    • 是的,听起来好像有人忘记添加内部版本号。这会在错误报告中造成一些混乱!
    • @MikeChristensen:没错!这就是我的意思。
    猜你喜欢
    • 2011-04-06
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多