2012-06-26 4 views
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 

Можно ли сделать это в DropDownList контроля?

+0

Почему вы не можете использовать управление древовидной структурой? –

+0

Потому что мой босс хочет, чтобы я сделал это с выпадающим списком :) – 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 

lev column дает вам уровень строки. Столбец используется для заказа ваших товаров. Этот пример позволяет использовать до 100 идентификаторов и 3 уровня.

Хотя я заказал данные здесь, это лучше всего сделать в C#, используя рекурсию.

+0

На самом деле я не мог написать запрос. Я проверил некоторые рекурсионные запросы, но я был в замешательстве. Если вы поможете мне написать, я буду счастлив. Большое спасибо. – Kadir

+0

добавлен exmaple. – nunespascal

+0

Спасибо за коды, но я думаю, что есть проблема. Я имею в виду, что это работает, но я не понимаю. Как я их заказываю, как -maincat, а затем подкаты.
проверьте этот снимок экрана. http://i1084.photobucket.com/albums/j415/kad1r/Untitled.png – Kadir

Смежные вопросы