建立起來,當您去,就像計數水平:
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
要顯示的路徑爲網頁上的鏈接,你會希望有兩個用於顯示的類別名稱和相應的IDS用於鏈接。一個簡單的分隔符,允許您使用字符串分隔功能,例如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頁面它給了我的字符串,我怎麼能鏈接到路徑列中的每個cateogry?謝謝 – 2013-05-04 08:15:55
@KaanKılıç - 更新的答案顯示如何處理建築物鏈接的類別名稱和ID。 – HABO 2013-05-04 11:03:08
謝謝先生。謹向你問好,這對我很有幫助。 – 2013-05-04 12:18:22