Я ищу лучший способ хранения данных в строке. Я нашел рабочий путь с использованием скрытых столбцов (hidden: true в colModel), но этот параметр все равно будет создавать узлы DOM для скрытых ячеек, и это кажется для меня пустой тратой. Есть ли лучший способ?Сохранять связанные данные строки?
ответ
Прежде всего, необходимо указать как использовать jqGrid. Если вы используете datatype: "local"
, вам не нужно создавать скрытые столбцы. Вместо того, что входные данные могут содержит элементы как
{ id: 123, name: "item name", price: 45.67,
orders: [
{ total: 1543.54, data: "2015-10-02" }
{ total: 1633.71, data: "2015-10-01" }
] }
и orders
массив будет сохранен в data
массиве как часть каждого элемента. Другими словами, вы можете сохранить любое количество дополнительных свойств любого типа, которые будут сохранены в локальных данных. Для получения всех данных можно использовать метод getLocalRow
. Например, можно использовать что-то вроде $("#grid").jqGrid("getLocalRow", "123")
, чтобы получить данные, связанные с строкой, имеющей id = «123».
Если используется datatype: "json"
и загружает данные с сервера, то вы можете использовать другие параметры. Свободный jqGrid 4.9 и выше поддерживает параметр additionalProperties
. Поэтому вместо создания скрытых столбцов prop1
и prop2
, которые существуют во входных данных, вы можете просто использовать additionalProperties: ["prop1", "prop2"]
. Он информирует jqGrid для чтения данных со входа. Можно использовать немного более сложные для объектов additionalProperties
, чтобы читать более сложные данные и связывать их со строкой. Основное преимущество использования additionalProperties
: указанные свойства доступны в пользовательских форматировщиках, и свойства будут сохранены локально, если вы используете loadonce: true
.
Если кто-то использовал TreeGrid то можно увидеть множество скрытых столбцов (level
, parent
, isLeaf
, expanded
, loaded
, icon
), которые сохраняются дополнительно в локальных данных. Скрытые столбцы не использовались внутренне со многих версий jqGrid. Начиная с версии 4.9 бесплатный jqGrid не создает ненужные столбцы и делает DOM страницы короче. Бесплатный jqGrid использует additionalProperties
в корпусе (см. the wiki article).
В настоящее время невозможно перейти на бесплатный jqGrid, тогда можно использовать другое обходное решение. Для сохранения дополнительной информации, связанной с сеткой, можно использовать userdata
. Можно либо включить userdata
непосредственно в ответ сервера со всей необходимой информацией, либо использовать обратный вызов beforeProcessing
для синтаксического анализа входных данных и заполнить дополнительные до входные данные будут проанализированы jqGrid. Я рекомендую прочитать the old answer для соответствующего примера кода. Основная идея заключается в построении userdata
в виде карты по rowid. Элементы карты должны содержать дополнительные свойства:
userdata: {
/* properties of userdata could be the rowids */
123: {
/* the data could contains the object with additional properties */
orders: [
{ total: 1543.54, data: "2015-10-02" }
{ total: 1633.71, data: "2015-10-01" }
]
}
}
Это позволяет использовать
var addProp = $(this).jqGrid("getGridParam", "userData");
и получить доступ к дополнительному использованию свойств addProp[rowid].orders
.
- 1. Сохранять данные из выбранной строки выбора сборщика
- 2. Как экспортировать и сохранять связанные Jupyter ноутбуки?
- 3. Сохранять исторические данные
- 4. Сохранять данные из массива
- 5. Сохранять данные UITextField Programmatically
- 6. Сохранять данные UITableView?
- 7. Сохранять данные в MVC
- 8. Сохранять данные о клипах
- 9. Сохранять инструмент командной строки
- 10. Сохранять значение строки secret
- 11. Спрятать связанные данные data_a
- 12. Связанные данные save Coredata
- 13. Как хранить связанные данные
- 14. CakePHP Найти Связанные данные
- 15. связанные данные & displayField cakephp
- 16. Связанные данные не сохраняются
- 17. «Связанные» данные в ElasticSearch
- 18. Связанные с ADODB строки возвращают строки, связанные с триггером
- 19. JQuery динамически добавленные строки не позволяют сохранять данные
- 20. Datatables вложенные (связанные) строки
- 21. Автоматически загружать связанные строки
- 22. Hibernate: удалить связанные строки
- 23. Связанные с Xamarin строки
- 24. Сохранять данные даты-времени как цифры
- 25. Найти связанные строки из dataframe
- 26. Сохранять данные как пользовательские настройки
- 27. SharedPreferences не может сохранять данные
- 28. Расширение Chrome - не сохранять данные
- 29. Firebase не может сохранять данные
- 30. iPhone 4: когда сохранять данные?
Спасибо за подробный ответ. Я загружаю данные с сервера с использованием json-типа данных. Я не мог найти никаких документов о опции «дополнительные свойства». И вообще, я использую jqgrid 4.6.0 на данный момент. Поэтому параметр userdata кажется лучшим для меня. Благодаря! – user3599803
@ user3599803: Добро пожаловать! Опция 'AdditionalProperties' существует начиная с версии 4.9 бесплатного jqGrid. Я включил ссылку в [wiki article] (https: // github.com/free-jqgrid/jqGrid/wiki/AdditionalProperties-option-make-unneeded-hidden-columns-in-local-сценарий) и описал вариант в моем ответе. Если вы используете старую версию jqGrid (4.6.0), то у нее нет такой опции, и вы должны использовать 'userData', например. – Oleg
Я искал в документах здесь и не нашел - http://www.trirand.com/jqgridwiki/doku.php?id=wiki:jqgriddocs – user3599803