Ой ... Это какой-то медленный и повторяющийся код ... (Извините за грубость ...)
Вы можете прочитать все необходимые данные в DataTable (используя DataSet и SqlDataAdapter), чтобы вы могли использовать его повторно и не выполнять запрос для каждого уровня и каждого элемента в меню. Таким образом, вы можете иметь один вызов базы данных вместо целого ряда, и вызовы базы данных являются абсолютным препятствием в этом коде.
Вы можете использовать рекурсию для получения разных уровней, вместо того, чтобы повторять один и тот же код снова и снова.
Для построения элементов меню у вас есть несколько вариантов. Один из них - поместить PlaceHolder на страницу и создать дерево элементов управления, добавив их в коллекцию элементов управления друг друга. Другой вариант - просто создать HTML-код самостоятельно в StringBuilder и поместить результат в элемент управления Literal.