У меня немного времени получается, чтобы сетки Dojo (1.5) играли хорошо. В частности, я потратил около двух недель работы, пытаясь реализовать сетку, которая позволяет нашим данным набора результатов сворачиваться в строки, где строки могут быть расширены. Данные поступают в виде полного набора в формате JSON с использованием ItemFileReadStore в качестве хранилища. Любые последующие сортировки или разбиения на страницы обрабатываются путем получения нового json из приложения и передачи новых параметров запроса в URL.
Вложенные данные имели только два уровня глубины - верхний слой, который должен всегда отображаться, и массив дочерних данных с такой же структурой, что и верхний слой. Каждый узел имеет уникальный идентификатор и идентификатор кластера - на родительском узле уникальный идентификатор и идентификатор кластера будут совпадать.
Изначально я был очень взволнован с TreeGrid - но я не мог понять, как я могу отформатировать его, чтобы сделать то, что мне нужно, а именно - исключить «итоговую строку» и одну дополнительную строку, полную пустых ячеек (???), которые я просто не мог понять, как удалить, если я не сфокусировал запрос только на одном кластере. Я изучил тестовые примеры, сам создал много тестовых страниц, попытался понять forestModel, который, как я мог сказать, был излишним ... Я нашел так мало документации, и источники, которые я нашел в Интернете, намекали, что TreeGrid может быть ненадежным ...
Поэтому я решил, что попробую реализовать расширяемые / складывающиеся строки в dataGrid.
Я сгладил данные JSON и добавил еще один атрибут, чтобы указать, что это узел верхнего уровня ('alwaysShow' = true). Я построил свою сетку программно и применил grid.filter (), чтобы вытащить только эти узлы верхнего уровня. Я изменил этот фильтр, расширив метод «фильтра» ItemFileReadStore _FetchItems, чтобы разрешать запросы OR вместо AND, а также изменил его, чтобы позволить ключам указывать на массивы - когда узел верхнего уровня (маленький значок +/- в ячейке) При щелчке мышью идентификатор кластера родительского узла добавляется в grid.filter.allowed [], а фильтр обновляется, что позволяет отображать узлы с этим значением cluster_id.
Это сработало на моем небольшом тестовом наборе из пяти записей (хотя id говорит, что он немного вялый ...) - но теперь я вытягиваю ~ 900 строк из приложения и расширяю большие кластеры (~ 80 строк). Я вижу очень длинную вспышку синего и белого на обновлениях фильтра. Я провел большую часть своего дня, пытаясь перешагнуть через firebug, чтобы найти, где это происходит, но логика додзё так распространена. Похоже, что происходит до вызова _Grid.js defaultUpdate.
Это так плохо, что я подумываю попробовать еще раз с TreeGrid. Я также обдумываю сделать это вручную ... Я бьюсь за то, что потратил так много времени, пытаясь заставить Додзё начать работать. Я также рассмотрел бы коммерческую библиотеку "JSON-> таблица со складной строкой", если у кого-то есть какие-либо рекомендации ...
Есть предложения или идеи? Знакомство с проблемой перепрошивки или как я могу адаптировать TreeGrid к своим потребностям? Я знаю, что это немного напыщенная речь ... Большое спасибо за любую помощь.
-robbie
РЕДАКТИРОВАТЬ: Я в конечном итоге отказался от попыток заставить Додзё делать то, что мне нужно, и сам запрограммировал его менее чем за день. Не лучшее использование трех недель ...