2013-06-24 146 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

:这将提供一个更灵活的解决方案。