Построить его, как вы идете, так же, как подсчет уровней:
WITH TempCtgry (CtgryID, CtgryName, ParentCtgryId, Lvl) AS (
SELECT CategoryID, CategoryName, ParentCatID, 0 as Level,
Convert(VarChar(1024), CategoryName) as Path
FROM Category r
WHERE r.ParentCatID IS NULL
UNION ALL
SELECT r1.CategoryID, r1.CategoryName, r1.ParentCatID, TempCtgry.Lvl + 1,
Convert(VarChar(1024), Path + ' >> ' + r1.CategoryName) as Path
FROM Category r1 INNER JOIN
TempCtgry on r1.ParentCatID = TempCtgry.CtgryID
)
SELECT *
FROM TempCtgry
Чтобы отобразить путь, ссылки на веб-странице, вы хотите иметь как имена категорий для отображения и соответствующие идентификаторы для использования в ссылках. Простой разделитель, который позволяет вам использовать функцию разделения строк, например. this, упрощает код дисплея:
WITH TempCtgry (CtgryID, CtgryName, ParentCtgryId, Lvl) AS (
SELECT CategoryID, CategoryName, ParentCatID, 0 as Level,
Convert(VarChar(1024), CategoryName) as Path,
Convert(VarChar(1024), CategoryID) as PathIds
FROM Category r
WHERE r.ParentCatID IS NULL
UNION ALL
SELECT r1.CategoryID, r1.CategoryName, r1.ParentCatID, TempCtgry.Lvl + 1,
Convert(VarChar(1024), Path + '|' + r1.CategoryName) as Path,
Convert(VarChar(1024), PathIds + '|' + Convert(VarChar(9), CategoryId)) as PathIds
FROM Category r1 INNER JOIN
TempCtgry on r1.ParentCatID = TempCtgry.CtgryID
)
SELECT *
FROM TempCtgry
Примечание: Это предполагает, что вертикальная черта («|») не может произойти в названии категории.
Код ASP.NET должен будет разделить обе строки пути и спустить их вместе, создавая ссылки по мере их прохождения. Удобный разделитель экрана - «» »(U + 00BB: знак двойного угла с двойным углом).
Можно добавить весь код для генерации требуемого HTML в запрос, но это не тот случай, когда он принадлежит.
Как я могу ввести ссылку в asp.net.It работает хорошо, но когда я хочу показать, что на странице asp.net она дает мне строку и как я могу дать ссылку на каждую категорию в столбце пути? Спасибо –
@ KaanKılıç - Обновлен ответ, чтобы показать, как обрабатывать имена категорий и идентификаторы для построения ссылок. – HABO
Спасибо, sir.King приветствует хороший ответ. Он работал на меня. –