1

使用 jQGrid v4.2 和 jQuery 1.8 我无法让搜索工作。当我单击搜索按钮时,没有任何反应...

我使用 v4.2 的原因是因为它是 jqgrid nuget 包的最新版本(令人讨厌的是作者没有更新它)。

有人有解决方法吗?我会用最新版本测试它,看看它是否是一个错误。在此示例中,它不适用于 datatype: local 但它也不适用于具有 json 数据的网格。难道我做错了什么?

<link href="../../Content/themes/base/minified/jquery-ui.min.css" rel="stylesheet" type="text/css" />
<link href="../../Content/jquery.jqGrid/ui.jqgrid.css" rel="stylesheet" type="text/css" />

<script src="../../Scripts/jquery-1.8.0.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.23.js" type="text/javascript"></script>

<script type="text/javascript" src="../../Scripts/i18n/grid.locale-en.js"></script>
<script src="../../Scripts/jquery.jqGrid.min.js" type="text/javascript"></script>


<script type="text/javascript">
    var mydata = [{ id: "1", name: "foo" }, { id: "2", name: "bar"}];

    jQuery(document).ready(function () {
        jQuery("#lgrid").jqGrid({ data: mydata,
            datatype: "local",
            height: 150,
            width: 600,
            rowNum: 10,
            rowList: [10, 20, 30],
            colNames: ['id', 'name'],
            colModel: [{ name: 'id', index: 'id', width: 60, sorttype: "int" },
                                    { name: 'name', index: 'name', width: 60}],
            pager: "#pgrid",
            viewrecords: true,
            caption: "Contacts"
        });

        jQuery("#lgrid").jqGrid('navGrid', '#pgrid', { del: false, add: false, edit: false });
    });     
    </script> 

<table id="lgrid"></table> 
<div id="pgrid"></div> 

编辑:适用于 jqGrid v4.4.1 ...所以我猜它是一个错误。可惜我不能再使用nuget包了:(

4

1 回答 1

2

我在同样的问题上苦苦挣扎,在我发现 jQgrid 搜索不适用于 jQuery 1.8.0 的原因之后:

在我的 jquery.jqGrid.js(v 4.3.2)中,我发现了这个:

if ($("#" + $.jgrid.jqID(IDs.themodal)).html() !== null) {
      showFilter($("#fbox_" + $.jgrid.jqID(+$t.p.id)));
}

在我的文件中,它位于第 6863 行,但您可能需要搜索它,因为与原始文件相比,我的文件可能有所修改。

问题是$([id]).html()在旧的 jQuery 版本中计算为 null,而在 jQuery 1.8.0 中它的计算结果为 undefined!由于 (undefined !== null) 为真且 (null !== null) 为假,因此代码对不同版本的 jQuery 执行不同的操作。

我修复它并使它与 jQuery 1.8.0 一起工作的方法是将比较器从 !== 更改为 !=。这是有效的,因为 (null != null) 和 (null != undefined) 的计算结果都为真!

希望这会有所帮助!

于 2012-09-07T11:08:46.600 回答