jqgrid randId () создает дубликаты после перезагрузки страницы - PullRequest
1 голос
/ 10 февраля 2012

В моей сетке после того, как пользователь вводит текст в нижнюю строку, я добавляю еще одну строку, чтобы они могли заполнить другую строку, если это необходимо. Сетка будет расти по мере необходимости пользователем. Это работает нормально, однако после перезагрузки страницы и заполнения из db функция addrowdata () не учитывает существующие идентификаторы строк и создает дубликаты, начиная с 1, например, например. jqg1. Он должен смотреть на существующие идентификаторы строк и создавать новые уникальные идентификаторы. Так что, если у меня уже есть 5 строк, он может начинаться с jqg6. Вот соответствующий код внутри onCellSelect:


var records = jQuery("#table-1").jqGrid('getGridParam', 'records');
var lastRowId = jQuery("#table-1").jqGrid('getDataIDs')[records - 1];

if (lastRowId == id)
{  
    jQuery('#table-1').addRowData(undefined, {}, 'last');
}

Я также попытался использовать $ .jgrid.randId () вместо undefined, результаты такие же, как и ожидалось.

Спасибо

Ryan

1 Ответ

1 голос
/ 10 февраля 2012

Я думаю, что ошибка в той части, где вы заполняете сетку данными из базы данных. Данные, сохраненные в базе данных, имеют уникальные идентификаторы. Идентификаторы не в форме jqg1, jqg2, ... Так что если не должно быть никаких конфликтов. Вам нужно просто заполнить поля id в JSON идентификаторами из базы данных.

Еще одна возможность заключается в том, что вы просто указываете параметр rowid (первый параметр) addRowData самостоятельно. В этом случае вы будете иметь полный контроль над новыми идентификаторами строк, добавленных в сетку.

Код функции $.jgrid.randId очень прост. $.jgrid.uidPref инициализировано как 'jqg' и $.jgrid.guid инициализировано как 1. Функция $.jgrid.randId выполняет следующее

$.jgrid.randId = function (prefix)  {
    return (prefix? prefix: $.jgrid.uidPref) + ($.jgrid.guid++);
}

Если действительно требуется , вы можете увеличить (но не уменьшить) значение $.jgrid.guid без каких-либо отрицательных побочных эффектов.

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