Это странное поведение, и я постараюсь объяснить это как можно лучше. Я знаю, что это длинный выстрел.
Я храню мои объекты jqGrid на моей странице в массиве глобальных объектов grids = {}
, так что myGrid будет доступен как grids['mygrid']
. Я также обертываю их в объект, который имеет несколько дополнительных свойств, таких как переданные настройки, идентификатор сетки, идентификатор пейджера и т. Д.
С учетом сказанного я инициализирую все свои сетки на $(document).ready()
. Я также настроил нажатие кнопки, чтобы показать модальное диалоговое окно jQuery, которое содержит 3 сетки. Они хранятся в div
с display: none
внизу моей страницы.
По какой-то причине я не могу понять, когда я нажимаю кнопку, чтобы открыть диалоговое окно, мой массив grids
изменяется, и объекты теряют свои свойства. Это происходит после события open
в диалоговом окне и происходит только один раз. Сетка все еще функционирует, но в определенных ситуациях, когда я получаю доступ к некоторым настройкам, они исчезают!
За этим стоит большой код, поэтому я не уверен, как я смогу это показать. Кто-нибудь знает, делает ли диалог jQuery какое-то забавное закулисное дело при рендеринге диалога, который может повлиять на живущий в нем jqGrid? Другие сетки работают нормально, но они используют локальные данные, тогда как эта получает данные с сервера. Любой совет приветствуется. Спасибо!
Вот изображение объекта в памяти до и после изменения. Обратите внимание на поле jqGridSettings, оно также делает строчную букву 'J' после того, как это произойдет.
Это начало определения объекта в моем javascript:
Это будет использоваться так:
grids = { }; // Global object.
grids["myGrid"] = new ByCommonGrid(myGrid, myGrid-Pager, url, editurl);