我试图将无限的类别加载到下拉列表中,但我失败了。
**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
是否可以在下拉列表控件中执行此操作?
这绝对是可能的。你只需要一点递归。可以在 sql 查询本身中完成。
如果您使用的是sql服务器,则可以使用公用表表达式实现递归
如果您对此感到困惑,请发表评论,我将编写查询向您展示。
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# 中完成,在那里使用递归。