Jqgrid被缓存后我想清楚了吗?

时间:2011-04-07 21:20:38

标签: jqgrid

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()方法应该是别的吗?我之所以这么做是因为我在网上找到了它,但是你们中的任何人都有更好的吗?

谢谢!

1 个答案:

答案 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'并返回时,您才需要执行此操作。