簡體   English   中英

確定值是否與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 + "'))");

但是,這樣做只搜索網格的當前頁面,而不是整個網格數據(感謝分頁)。 所以我希望能夠調用setSelection方法並捕獲是否在jqGrid中找不到傳遞的密鑰。

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

但是調用setSelection方法會返回整個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,從不更多)。

接下來,我直接從網格獲取selectedRowIds數組(此網格具有多選)。 然后,如果在selectedRows數組中找不到網格數據的id,我將觸發jqGrids的setSelection來選擇行。

最后一個else塊只是將訂單號添加到隱藏字段。

似乎工作。 如果有其他人遇到這個問題,我希望這有幫助!

編輯只是一個說明,我有,如果($ .inArray(gridDataRow [0],ID,selRowIds)<0)檢查,看看是否尚未被選中的行。 如果是,我不想取消選擇(客戶要求它以這種方式行事)。 如果您最終使用此代碼,您可能希望刪除該IF檢查並簡單地調用setSelection,以便切換該行的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM