Jqgrid кэшируется, я думаю, после того, как я это очистил? - PullRequest
1 голос
/ 08 апреля 2011
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 Ответ

3 голосов
/ 08 апреля 2011

Наиболее эффективным способом удаления всех локальных данных из сетки может быть код:

// 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' и обратно, вам может потребоваться сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...