Создание меню, управляемого базой данных, с помощью ASP.NET, JQuery и Suckerfish

Я пытаюсь создать меню из таблицы, используя меню CSS Suckerfish и JQuery. Я использую это в качестве ссылки: Меню Suckerfish с ASP. NET и JQuery, и у меня он работает с добавленными вручную ссылками (как в статье).

Там, где у меня возникают проблемы, я пишу рекурсивную функцию для получения элементов меню из базы данных и создания новых элементов меню в надлежащей иерархии. Моя таблица базы данных выглядит так:

Меню стола


Текст ссылки MenuID ParentID

Идея состоит в том, что если элемент является элементом родительского уровня, MenuID и ParentID одинаковы, если это дочерний элемент, он будет иметь MenuID своего родителя в поле ParentID. Мне нужно создать функцию, которая может пройти и найти всех дочерних элементов для родителей (может быть несколько уровней) и заменить ручные записи следующим образом:

        Dim Foo As New MenuItem("#", "Foo", Me)
        Items.Add(Foo)
        Foo.Items.Add(New MenuItem("#", "1", Me))
        Foo.Items.Add(New MenuItem("#", "2", Me))
        Foo.Items.Add(New MenuItem("#", "3", Me))
        Foo.Items.Add(New MenuItem("#", "4", Me))

Я открыт для изменения структуры таблицы базы данных, если это необходимо, и в основном делаю все, что угодно, для этого.

Спасибо за любой вклад, это очень ценно.


person Zero Cool    schedule 26.11.2008    source источник
comment
Какую базу данных вы используете? У разных поставщиков есть разные расширения, которые могут помочь решить вашу проблему.   -  person Min    schedule 26.11.2008


Ответы (1)


Этот метод представления иерархических данных легко понять людям, но трудно извлечь данные, потому что он требует рекурсии для извлечения полной иерархии. В некоторых вариантах SQL есть команды, которые сделают это за вас, но это то, что происходит за кулисами.

Я предлагаю вам прочитать Другие деревья и иерархии в SQL и реструктурируйте схему, используя метод материализованного пути, который она объясняет. Его легко запрашивать, и он очень хорошо масштабируется.

person D'Arcy Rittich    schedule 26.11.2008
comment
Спасибо, OrbMan, статья мне понравилась. Мне нравится то, что вы упомянули в начале своего ответа, что это легко понять, но сложно реализовать - это всегда было моим опытом. Ваше здоровье. - person Zero Cool; 27.11.2008