jqGrid: идентификаторы дочерних элементов могут конфликтовать, когда на странице появляется более одной сетки: есть ли настройка, чтобы этого избежать? - PullRequest
2 голосов
/ 26 июня 2010

Если на странице одновременно несколько jqGrid, их идентификаторы дочерних элементов могут конфликтовать.Возможно, вы захотите иметь три или четыре одинаковые сетки, расположенные одна над другой, показывая одни и те же данные, но из разных лет.

Идентификаторы дочерних элементов должны иметь предварительно добавленный идентификатор таблицы.Есть ли параметр «полностью определенные | подробные идентификаторы», который делает это?

Спасибо

1 Ответ

0 голосов
/ 26 июня 2010

Прежде всего, я нахожу ваш вопрос очень интересным, поэтому +1 за вопрос. То, что вы обнаружите, может быть очень большой проблемой, которую трудно диагностировать. Поэтому я рекомендую вам разместить соответствующее предложение в запросе функции на http://www.trirand.com/blog/?page_id=393/feature-request/.

Теперь о возможностях обхода. Самый простой способ - генерировать уникальные идентификаторы для разных сеток на стороне сервера. Но это не всегда возможно. Вы можете добавить id_prefix в качестве дополнительного параметра кода вашего сервера, который генерирует ответ JSON / XML из jqGrid. Затем сервер должен добавить этот префикс ко всем идентификаторам перед отправкой обратно в jqGrid. Этот обходной путь не подходит, но он будет работать.

Другой способ, который я вижу, это изменение id всех строк jqGrids относительно jsonReader (см. http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#jsonreader_as_function). Если вы добавите в jqGrid параметр следующим образом:

jsonReader: { id: function(obj) { return "BlaBla" + obj.id; } }

тогда все идентификаторы в таблице получат префикс "BlaBla". Если вы используете jqGrids на своей странице только для отображения данных в сетке, это может быть вашим решением. Вы не должны забывать о возможных новых проблемах, которые приводят к этому обходному пути. Если вы используете сценарий master / detail, Edit / Delete и т. Д., Вы должны принять во внимание, что идентификаторы сетки теперь будут иметь префиксы. Поэтому вам придется включать дополнительный код по вечерам, например onclickSubmit, serializeRowData, serializeGridData и т. Д., Чтобы сократить префикс перед использованием идентификатора или перед отправкой идентификаторов на сервер.

...