识别值是否与 jqGrid 数据中的任何键匹配的正确方法是什么?
What is the proper way to identify if a value matches any key in the data of a jqGrid?
我有一个jqGrid,它使用订单号作为网格的关键字段。用户可以在页面上的文本框中输入订单号,我需要"搜索"网格,看看输入的值是否与网格的任何行匹配。然后,如果是这样,我想选择网格行,如果没有,我想将该键转储到页面上其他地方的隐藏字段中。
据我所知,似乎只有一种方法可以通过搜索网格生成的表来做到这一点。
$("#list > tbody > tr:has(td:contains('" + str + "'))");
但是,这样做只会搜索网格的当前页面,而不是整个网格数据(感谢分页)。因此,我希望能够调用 setSelect 方法并在 jqGrid 中找不到传递的键时捕获。
$(this).jqGrid('setSelection', idOfSelectedRow);
但是调用 setSelect 方法会返回整个 jquery 对象,即使找不到传递的 id(如文档中所述,这是我的错)。
所以,这就是我有点卡住的地方。我需要能够搜索整个网格的数据以查找键。如果需要,我可以更多地阐述我的实现。
所以,在深入研究文档之后,我相信我找到了更好的方法。
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,永远不会更多)。
接下来,我直接从网格获取 selectedRowId 数组(此网格已打开多选)。然后,如果在 selectedRows 数组中找不到网格数据中的 id,我将触发 jqGrid 的 setSelect 来选择该行。
最后一个 else 块只是将订单号添加到隐藏字段中。
似乎有效。如果其他人遇到这个问题,我希望这有所帮助!
编辑只是一个笔记,我有 if ($.inArray(gridDataRow[0].id, selRowIds) <0)检查该行是否尚未选择。如果是,我不想取消选择它(客户要求它以这种方式运行)。如果您最终使用此代码,您可能希望删除该 IF 检查并简单地调用 setSelection,以便它将切换该行的选择。
- 打破承诺链的好方法是什么
- 在JavaScript中拆分日期字符串的更好方法是什么
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- 处理浮点错误的最佳方法是什么
- 基于窗口宽度jquery的函数的替代方法是什么
- knex:根据结果创建数组的合适方法是什么
- 以编程方式填充组合框道场 (1.8) 的最佳方法是什么?
- 使用Modernizr检测移动设备最可靠的方法是什么
- 确定var是否是javascript中的elementFinder对象的方法是什么
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- 让会话值可用于JavaScript的好方法是什么
- 从AngularJs获取谷歌地图对象的正确方法是什么
- 使用ReactJS和Flux架构从服务器获取数据的正确方法是什么
- 列出没有 mysql 的元素的最佳方法是什么
- 克服错误的更优雅的方法是什么:需要对象说明符.当通过JXA通过Messages发送SMS时,参数没有对象说明符
- 使用较少代码隐藏和显示选择菜单内容的更好方法是什么?javascript
- 在 Javascript 中实现解耦代码/回调的正确方法是什么?
- 使用Javascript,获取元素的方法是什么,基于打开和关闭标记之间的文本
- 在d3.json中使用d3.csv组合多个csv文件数据输入的最佳方法是什么
- 直接在DOM事件处理程序中调用作用域函数的最短方法是什么