Помогает сетка данных Dojo и TreeGrid - у сетки данных есть переформатирующая вспышка? - PullRequest
0 голосов
/ 09 сентября 2010

У меня немного времени получается, чтобы сетки 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

РЕДАКТИРОВАТЬ: Я в конечном итоге отказался от попыток заставить Додзё делать то, что мне нужно, и сам запрограммировал его менее чем за день. Не лучшее использование трех недель ...

1 Ответ

0 голосов
/ 27 сентября 2010

РЕДАКТИРОВАТЬ: я только что нашел решение, которое работает для меня, я добавил следующий CSS:макет стола.Это хорошо для меня.Надеюсь, что это решит вашу проблему.

Это не поможет, но просто даст вам знать, что:

"- но я не мог понять, как я могу отформатировать это, чтобыто, что мне было нужно, а именно - исключить «итоговую строку» »

- это ТОЧНО то же самое, чего я пытаюсь достичь, и не нашел решения, хотя это выглядит как очень простая функция ...Вы знаете, если я нашел решение ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...