下拉列表和类别子类别

时间:2012-06-26 06:18:08

标签: c# asp.net drop-down-menu

我尝试将无限类别加载到下拉列表但是我失败了。

**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

是否可以在下拉列表控件中执行此操作?

1 个答案:

答案 0 :(得分: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

lev列为您提供行的级别。 ord列用于订购商品。此示例允许最多100个ID和3个级别。

虽然我已经在这里订购了数据,但最好在c#中使用递归来完成。