Лучше, чем TreeView - PullRequest
       5

Лучше, чем TreeView

2 голосов
/ 18 октября 2010

Я связываю много данных с элементом управления TreeView, поскольку данные являются естественной иерархией категорий. Проблема в том, что его много. Мне удалось устранить большую часть накладных расходов, связав только те узлы, которые появляются в видимом дереве, но это все еще оставляет много в ViewState и др.

У кого-нибудь есть метод или альтернативный элемент управления для улучшения такого рода проблем с производительностью, пожалуйста?

Я думал о попытке унаследовать элемент управления TreeView и сбросить его значение viewstate в Sesssion и обратно - но это настоящий хак, на который у меня сейчас нет времени ...

Ответы [ 2 ]

2 голосов
/ 18 октября 2010

Да ... вы можете использовать загрузку по требованию или отложенную загрузку элементов дерева.

т.е.

1 - Показывать только узлы корневого уровня, как в Проводнике окон.

2 - когда пользователь щелкает узел, затем выбирает только дочерние узлы и показывает.

таким образом, вы увидите только те узлы, которые фактически запрашивал пользователь.

и вы можете дать чекбокс, который говорит: «ПОКАЖИТЕ ВСЕ ДЕРЕВО РАСШИРЕНО», очевидно, потребуется больше времени, чтобы показать.

вы также можете реализовать функцию поиска по узлу, но помните, что дерево указано в виде графа, поэтому используйте правильный алгоритм grpah при поиске узла типа (BFS или DFS)

вы также можете кэшировать результаты узлов, но это следует делать только в том случае, если само дерево не используется для обновления иерархии.

0 голосов
/ 18 октября 2010

Помимо решения динамической загрузки древовидного представления при расширении, попробуйте ViewStateCompression для улучшения состояния представления, используйте Asp.net Caching для кэширования вывода или просто кэшируйте объекты, динамически добавляя объекты в кэш с помощью генерации ключей, таких как "дерево" и родитель. Объекты кэша распределяются между сессиями, так что это будет даже более полезно. Надеюсь, это поможет.

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