![]() |
|
Модераторы: gambit |
![]()
|
|
| voodoo_alik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 13.4.2007 Репутация: нет Всего: нет |
Добрейший всем вечерок !
Необходимо создать механизм редактирования и отображения иерархического меню неограниченной вложенности. Интерфейс редактирования и отображения должен быть реализован на ASP.NET (C#) в виде web-приложения, а данные должны храниться в MS SQL 2000. У кого какие соображения имеются по этому поводу ? Интересует, для начала, как построить модель БД, которая будет эту самую неограниченную вложенность хранить... Да простят меня модеры.... Но задача то, на ASP.NET Это сообщение отредактировал(а) voodoo_alik - 31.10.2007, 22:12 |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 34 Всего: 170 |
В принципе, совершенно не важно:
- на чем интерфейс должен быть построен - где должны храниться данные - что из себя представляют сами данные важно только одно : алгоритм/модель мне кажется, что нужно просто заюзать паттерн компоновщик, на базе которого построены все контролы-деревья, технология xml, component-model ну и т.д. А начало всему - двунаправленные списки... Короче: любой item может иметь: - item-родитель (или null, тогда текущий item - это root) - коллекцию детей (или null) - ну и сами данные... В терминах СУБД это будет означать одну единственную таблицу с полями (здесь даже не нужно хранить ссылки на детей, одним Parent-ом обойтись можно) -------------------------------------------------- Id | ItemName | ItemParentId -------------------------------------------------- 1 root null 2 menu1 1 3 menu2 1 4 menu11 2 5 menu12 2 6 menu21 3 7 menu22 3 Это сообщение отредактировал(а) tol05 - 31.10.2007, 22:46 -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| voodoo_alik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 13.4.2007 Репутация: нет Всего: нет |
Спасибо.
А если в режиме редактирования необходимо реализовать функцию изменения очередности следования подпунктов, находящихся на одной иерархической ветви и принадлежащих одной родительской записи ? Например: Пункт 1 Пункт 2 Пункт 2.1. Пункт 2.2. Пункт 2.2.1 Пункт 2.2.2. Пункт 2.3. Пункт 3 ============================ Пункт 1 Пункт 2 Пункт 2.1. Пункт 2.3. Пункт 2.2. Пункт 2.2.1 Пункт 2.2.2. Пункт 3 |
|||
|
||||
| tol05 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 34 Всего: 170 |
Нужно прежде всего создать коллекцию бизнесс-объектов и инициализировать их при считывании строк из БД
и если нужно поменять у двух item-ов родителей
-------------------- На хорошей работе и сны хорошие снятся. |
||||
|
|||||
| Servena |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 24.7.2007 Где: Днепропетровск Репутация: 4 Всего: 14 |
Я думаю тогда можно добавить еще одну колонку, например ItemOrder, которая и будет выполнять эту функцию.
|
|||
|
||||
| voodoo_alik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 13.4.2007 Репутация: нет Всего: нет |
Т.е. это можно реализовать и на стороне Сервера БД, с помощью хранимой процедуры например, или прямо в приложение программно ?
А как лучше ? Это сообщение отредактировал(а) voodoo_alik - 1.11.2007, 20:26 |
|||
|
||||
| Servena |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 251 Регистрация: 24.7.2007 Где: Днепропетровск Репутация: 4 Всего: 14 |
Можно и так и так. Но на стороне приложения будет лучше - можно сделать более гибкий алгоритм, да и тормозить меньше будет.
|
|||
|
||||
| Magnetic |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 11.11.2006 Репутация: 1 Всего: 1 |
Для меню неограниченной вложенности очень удобная модель базы данных nasted sets - в ней, кроме родительского айди, используются левые и правые индексы. Эта модель достаточно проста и гораздо удобнее при работе с элементами, чем использование одного родительского айди, позволяет обойтись без рекурсии при проходе по дереву элементов. В статье есть готовые запросы для работы с данными, но стоит потратить немного времени на понимание принципа модели для наиболее эффективного ее использования.
--------------------
Dude, where's my car? |
|||
|
||||
| voodoo_alik |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 13.4.2007 Репутация: нет Всего: нет |
Да, очень интересно... Огромное спасибо за ссылку...
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка под ASP.NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |