function clearJqGrid()
{
// get IDs of all the rows of jqGrid
var rowIds = $('#messages').jqGrid('getDataIDs');
// iterate through the rows and delete each of them
for(var i=0,len=rowIds.length;i<len;i++)
{
var currRow = rowIds[i];
$('#messages').jqGrid('delRowData', currRow);
}
}
因此,在我进行AJAX调用以填充此网格之前,我每运行一次。但是,如果您然后上升并对其中一列进行排序,则网格会从之前的填充中恢复其中的所有旧消息。如果没有排序,你只能看到应该存在的那些。
Jqgrid是否应该缓存它的条目?我的clearJqGrid()
方法应该是别的吗?我之所以这么做是因为我在网上找到了它,但是你们中的任何人都有更好的吗?
谢谢!
答案 0 :(得分:3)
从网格中删除所有本地数据的最有效方法可能是代码:
// get DOM element of the table
var myGridDomNode = $('#messages')[0];
// delete internal local grid data
myGridDomNode.p.data = [];
myGridDomNode.p._index = {};
// delete all grid contain excepting the first dummy invisible row
var trf = $("tbody:first tr:first",myGridDomNode)[0]; // save first row
$("tbody:first",myGridDomNode).empty().append(trf);
在其他情况下,可以有效地使用GridUnload()
,这会另外破坏列标题,寻呼机和所有网格元素。因此,再次显示网格需要重新创建它。
在大多数情况下,不需要删除网格包含。在ajax调用完成后,jqGrid将删除网格包含自身。只有当您手动将网格的数据类型从dytatype:'json'
切换到dytatype:'local'
并返回时,您才需要执行此操作。