Мне нужно показать данные в раскрывающемся списке, как древовидную структуру, я пытался, но не смог сделать это правильно в ASP.Net.

Я работаю над CMS, которая поддерживает несколько языков, и я хочу, чтобы в раскрывающемся списке отображались «имена страниц», созданные аналогично примеру ниже.

Home Page
Second Page
-Child Page1
-Child Page2
Third Page
-Child Page1
-Child Page2
-Child Page3
--Sub Child Page1
--Sub Child Page2

Ниже приведена структура таблицы, которую я использую для хранения страницы. Я попробовал это с помощью кода SQL и C#, но не смог сделать это правильно. Буду признателен, если кто-нибудь может отправить мне SQL-запрос, если это можно сделать, используя только SQL-запрос, или показать мне фрагмент кода на С#, чтобы сделать это.

С моей стороны структура моей таблицы выглядит нормально, любые изменения в этой структуре также приветствуются для повышения производительности.

tbl_Language

LangID int   -- PK
LangName nVarchar(20) -- English, Arabic, Spanish
Lang_Code varchar(6)  -- en-US, ar-AE etc

tbl_Pages

pageID int
PageName nVarchar(50)
pageTitle nVarchar(200)
pageDesc nVarchar(400)
pageBody nVarchar(Max)
.....
.....
PageParent int
LangID int  -- FK
....
....

заранее спасибо


person Learning    schedule 06.01.2012    source источник


Ответы (2)


Используйте Common Table Expressions для написания рекурсивного запроса для обхода древовидной структуры страниц на стороне sql, если вы хотите сделать это на стороне sql.

Взгляните на эти ссылки для получения дополнительной информации:

person Jahan    schedule 06.01.2012
comment
Спасибо, я посмотрю, смогу ли я изменить сценарии в соответствии со своими потребностями. - person Learning; 06.01.2012
comment
Я попробовал и получил один рабочий код, но он не дает точного результата, который мне нужен в раскрывающемся списке. - person Learning; 06.01.2012
comment
Вы можете выполнить дальнейшую обработку в приложении, sql не является хорошим языком для того, что вы хотите сделать. - person Jahan; 06.01.2012

Вы смотрели на использование иерархии? см.: http://msdn.microsoft.com/en-us/library/bb677173(v=sql.100).aspx

Конечно, вам понадобится Sql 2008 или более поздняя версия, но она предназначена для того, что вы пытаетесь сделать.

person Mark J Miller    schedule 17.01.2012