2013-06-24 67 views
2

我正在使用Multiselect選項從JqGrid刪除記錄。記錄從數據庫中刪除如何更新UI

grid.jqGrid('getGridParam', 'selarrrow') 

使用上面的線我得到了用戶選擇的行ID和進行AJAX調用,通過ID的,並從數據庫中刪除。

我的疑問是刪除後,我應該重新形成網格或什麼是處理這個最好的方法?

任何工作示例都會很棒。

回答

2

您可以重新加載網格,但這會導致另一個往返服務器。

或者,由於您已經擁有了要刪除的行的ID,因此您可以遍歷該列表並使用delRowData方法刪除它們。由於事實,即改變在數據庫發生電網將會過時,你實際上可能要重新加載電網,以便從去陳舊保持數據

var rows = grid.jqGrid('getGridParam', 'selarrrow'); 
rows = rows.slice(); // Create a copy of the array since it 
        // is indirectly modified below 
for (var i = 0; i < rows.length; i++){ 
    jQuery('#mygrid').jqGrid('delRowData', rows[i]); 
} 
+0

完美的工作。但只有備選行被刪除!我保持一個控制檯返回[1,3,5,7]只有1,5被刪除。我的網格做錯了嗎? – user2067567

+1

@JustinEthier:'rows'將**引用**到內部參數'selarrrow'。在刪除第一個項目之後,您將比較'i'和'rows.length',它是一個較小的。即使你將'rows.length'高速緩存在另一個變量中,它也是錯誤的,因爲行'[i]'的後半部分將會是'undefined',因爲'rows'的大小在每次刪除後都會減少。例如,你可以總是使用索引'i = 0'並且執行'l = rows.length'次。或者,你可以從'i = rows.length - 1'開始並遞減'i':'for(var i = rows.length - 1; i> = 0; i - ){...}' – Oleg

+0

@奧列格 - 好,趕快,謝謝! –

0

:這將提供一個更靈活的解決方案。