2010-06-25 2 views
2

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

Идентификаторы дочерних элементов должны иметь прикрепленный к ним указатель таблицы. Устанавливается ли это «полностью квалифицированная установка verbose ids»?

Благодаря

+0

Привет Тим! Я опубликовал в http://www.trirand.com/blog/?page_id=393/feature-request/prefixes-to-rowids/ предложение, которое устраняет проблему в будущем. Сегодня Тони согласен, что это будет реализовано в версии 3.8 jqGrid. См. Также http://www.trirand.com/blog/?page_id=393/releases/jqgrid-3-8-beta/ список новых функций в версии 3.8 jqGrid. – Oleg

+0

Олег, спасибо, что следи за этим вопросом! – Tim

ответ

0

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

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

Другим способом, который я вижу, является изменение идентификатора всех строк 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 на своей странице только для отображения данных в сетке, это может быть вашим решением. Вы не должны забывать о возможных новых проблемах, которые вызывают это обходное решение. Если вы используете основной/подробный сценарий, Edit/Delete и т. Д., Вы должны принять во внимание, что у ids сеток будут префиксы. Поэтому вам нужно будет добавить дополнительный код в evens, например onclickSubmit, serializeRowData, serializeGridData и т. Д., Чтобы префикс префикса перед использованием id или перед отправкой идентификаторов на сервер.

+0

Спасибо за предложения, Олег. Я использую метод addRowData в настоящий момент $ ("# my-table"). JqGrid ('addRowData', i + 1, data [i]); поэтому я временно за рулем без весла. Я хотел бы сделать запрос функции в блоге trirand, но механизм WordPress «забыл пароль», кажется, сломан. Я также проверил папку со спамом. – Tim

+0

Извините, но я не понимаю, как проблемы WordPress связаны с проблемами, описанными в вашем вопросе, и с функцией-запросом в блоге trirand. Если у вас есть некоторые технические проблемы для доступа к блогу trirand, я мог бы сделать это за вас (после того, как вы его четко определите). Насколько я понимаю ваш комментарий с помощью 'addRowData', у вас есть только локальные данные и не используют входные данные JSON и XML. Таким образом, вы можете на стороне клиента определить идентификаторы. Правильно ли это? Вы пытаетесь использовать версию 3.7.x jqGrid с параметром 'data'? Тогда вам не нужно использовать функцию 'addRowData'. Ваша проблема с идентификаторами еще существует? – Oleg