0

無制限のカテゴリをドロップダウン リストにロードしようとしましたが、失敗しました。

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

ドロップダウンリストコントロールでそれを行うことは可能ですか?

4

1 に答える 1

1

それは間違いなく可能です。少しだけ再帰が必要です。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# で行うのが最適です。

于 2012-06-26T06:34:13.600 に答える