2012-06-26 275 views
0

我試圖加載無限的類別下拉列表,但我失敗了。
Dropdownlist和類別子類別

**Categories** 
ID, MainCategoryID, CatName, Description, dateCreated, isActive 
1, 0, Cars, "blabla", 26.06.2012, True 
2, 1, Ferrari, "blabla", 26.06.2012, True 
3, 1, Lamborgini, "blabla", 26.06.2012, True 
4, 2, F-40, "blabla", 26.06.2012, True 
5, 2, F-50, "blabla", 26.06.2012, True 
6, 0, Motorbikes, "blabla", 26.06.2012, True 

- MainCategory 
    -- SubCategory1 
    -- SubCategory2 
    -- SubSubCategory1 
- MainCategory 
- MainCategory 
    -- SubCategory3 
    -- SubSub .. so on 

在下拉列表控件中可以這樣做嗎?

+0

爲什麼你不能使用treeview控件? –

+0

因爲我的老闆要我用dropdownlist做:) – Kadir

回答

1

這絕對有可能。你只需要一點遞歸。 可以在你的sql查詢本身完成。

如果您正在使用SQL Server,你可以使用common table expressions

如果你困惑於這個實現遞歸,把一個評論,我會寫的查詢,以顯示你。

WITH cat(ord,lev, id, mainID, catName) AS 
(
    SELECT ID*POWER(100, 3) AS ord, 1 AS lev, ID, MainCategoryID,CatName FROM test WHERE MainCategoryID =0 
    UNION ALL 
    SELECT cat.ord + test.ID * POWER(100, 3-lev) AS ord,lev+1 AS lev, test.ID, test.MainCategoryID, test.CatName AS CatName FROM test INNER JOIN cat ON test.MainCategoryID = cat.ID 
) 
SELECT * FROM cat ORDER BY ord 

列列給你的行的級別。 ord列用於訂購您的物品。這個例子允許多達100個ID和3個級別。

儘管我已經在這裏訂購了數據,但最好在c#中完成,在那裏使用遞歸。

+0

其實我無法寫出查詢。我檢查了一些遞歸查詢,但我很困惑。如果你幫我寫,我會很高興。非常感謝。 – Kadir

+0

增加了一個例子。 – nunespascal

+0

感謝代碼,但我認爲存在問題。我的意思是它的作品,但我不明白。我如何訂購它們,如-maincat,然後是subcats。
檢查截圖。 http://i1084.photobucket.com/albums/j415/kad1r/Untitled.png – Kadir