2016-04-26 26 views
1

我有一個jqGrid,使用訂單號作爲網格的關鍵字段。用戶可以在頁面上的文本框中輸入訂單號,我需要通過網格「搜索」並查看輸入的值是否與網格中的任何行匹配。然後,如果是這樣,我想選擇網格行,如果不是,我想將該鍵轉儲到頁面上其他位置的隱藏字段中。什麼是正確的方法來確定一個值是否匹配jqGrid的數據中的任何鍵?

從我所知道的情況來看,似乎只有一種方法可以通過搜索網格生成的表來執行此操作。

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

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

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

但在調用爲setSelection方法返回整個jQuery對象,即使傳入的id沒有發現(如文檔中描述的那樣,這是我的壞)。

所以,這是我遇到困難的地方。我需要能夠搜索整個網格的數據來尋找關鍵。如果需要,我可以更多地闡述我的實現。

回答

0

因此,在挖掘文檔後,我相信我找到了更好的方法。首先,我抓取用戶的輸入,然後從網格參數中獲取整個jqGrid數據對象(在今天之前從不知道這個)。之後,我決定使用.grep在網格數據數組中找到一個具有id ==用戶輸入的對象。假設grep成功,gridDataRow將具有非零長度(並且因爲訂單號是jqgrid中的關鍵字段,所以我認爲長度將始終爲1,從不會更多)。

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

last else塊只是將訂單號添加到隱藏字段。

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

編輯只是一個說明,我有 如果($ .inArray(gridDataRow [0]。ID,selRowIds)< 0) 檢查,看是否是不是已經選擇的行。如果是這樣,我不想取消選擇它(客戶要求這樣做)。如果你最終使用這個代碼,你可能想刪除那個IF檢查,並簡單地調用setSelection,以便它切換該行的選擇。

相關問題