gpt4 book ai didi

javascript - 识别值是否与 jqGrid 数据中的任何键匹配的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-28 06:05:43 25 4
gpt4 key购买 nike

我有一个 jqGrid,它使用订单号作为网格的关键字段。用户可以在页面上的文本框中输入订单号,我需要在网格中“搜索”并查看输入的值是否与网格的任何行匹配。然后,如果是,我想选择网格行,如果不是,我想将该键转储到页面其他位置的隐藏字段中。

据我所知,似乎只有一种方法可以通过搜索网格生成的表来做到这一点。

$("#list > tbody > tr:has(td:contains('" + str + "'))");

但是,这样做只会搜索网格的当前页面,而不是整个网格数据(感谢分页)。因此,如果在 jqGrid 中找不到传递的 key ,我希望能够调用 setSelection 方法并捕获。

$(this).jqGrid('setSelection', idOfSelectedRow);

但调用 setSelection 方法会返回整个 jquery 对象,即使未找到传递的 id(如文档中所述,那是我的错)。

所以,这就是我陷入困境的地方。我需要能够搜索整个网格的数据来寻找 key 。如果需要,我可以详细说明我的实现。

最佳答案

因此,在深入研究文档后,我相信我找到了更好的方法。

var orderNum = $('#tbUserInput').val();
var gridData = $('#GridData').jqGrid('getGridParam', 'data');
var gridDataRow = $.grep(gridData, function (e) { return e._id_ == orderNum; });

if (gridDataRow.length > 0) {
var selRowIds = $('#GridData').jqGrid("getGridParam", "selarrrow");
if ($.inArray(gridDataRow[0]._id_, selRowIds) < 0) {
$('#GridData').jqGrid('setSelection', gridDataRow[0]._id_, true);
}
}
else {
AddSelectedOrder(orderNum, $('[id*=hfSelectedOrders]'));
}

首先,我获取用户的输入,然后从网格参数中获取整个 jqGrid 数据对象(今天之前从来不知道这一点)。之后,我决定使用 .grep 来查找网格数据数组内的对象,该对象的 id == 用户输入。假设 grep 成功,gridDataRow 将具有非零长度(并且由于订单号是 jqgrid 中的关键字段,因此我可以假设长度始终为 1,不再大于 1)。

接下来,我直接从网格获取 selectedRowIds 数组(该网格启用了多重选择)。然后,如果在 selectedRows 数组中找不到网格数据中的 id,我将触发 jqGrids 的 setSelection 来选择该行。

最后一个 else block 只是将订单号添加到隐藏字段。

似乎有效。如果其他人遇到这个问题,我希望这会有所帮助!

编辑只是一个注释,我有 if ($.inArray(gridDataRow[0].id, selRowIds) < 0)检查该行是否尚未选择。如果是,我不想取消选择它(客户要求它这样做)。如果您最终使用此代码,您可能需要删除该 IF 检查并简单地调用 setSelection,以便它将切换该行的选择。

关于javascript - 识别值是否与 jqGrid 数据中的任何键匹配的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36874763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com