如何显示一个DropDownList分层数据 [英] How to show hierarchial data in a dropdownlist

查看:105
本文介绍了如何显示一个DropDownList分层数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个表在SQL Server 2005。

I have a table in SQL Server 2005.

我想在一个DropDownList维修器材相同的层次结构,以显示所有域名。即

I want to show all domain name in a dropdownlist maintaing the same hierarchy. i.e

法结果
  工程结果
  --civil结果
   - 机械结果
  导师:
  --Dental结果
  ----腔结果
  --MBBS结果

Law
Engineering
--civil
--Mechanical
Medical
--Dental
----Cavity
--MBBS

我要追加 - 根据域级别。它可以使用一个SQL查询。
或者另外我可以有任何其他控件来显示此数据。

I need to append '--' according to the domain level. Is it possible using a sql query. or alternatively can I have any other control to show this data.

推荐答案

在SQL Server 2005和了,你可以使用基于<递归的CTE(例如href=\"http://consultingblogs.emc.com/christianwade/archive/2006/09/20/SQL-Server-Standard-_2D00_-Recursive-Hierarchies-to-XML.aspx\"相对=nofollow>这篇文章):

In SQL Server 2005 and up, you can use recursive CTEs (example based on this article):

DECLARE @t AS TABLE (domainid INT NOT NULL, domainname VARCHAR(25) NOT NULL, parentdomainid INT NULL);
INSERT INTO @t VALUES (1, 'Law', NULL);
INSERT INTO @t VALUES (3, 'Engineering', NULL);
INSERT INTO @t VALUES (4, 'Medical', NULL);
INSERT INTO @t VALUES (6, 'Civil', 3);
INSERT INTO @t VALUES (7, 'Mechanical', 3);
INSERT INTO @t VALUES (8, 'Dental', 4);
INSERT INTO @t VALUES (9, 'MBBS', 4);
INSERT INTO @t VALUES (12, 'Cavity', 8);

-- SELECT * FROM @t;

WITH CTE(domainid, parentdomainid, domainname, Depth, SortCol)
            AS
            (
              SELECT domainid, parentdomainid, domainname, 0, CAST(domainid AS varbinary(max))
              FROM @t
              WHERE parentdomainid IS NULL
              UNION ALL
              SELECT d.domainid, d.parentdomainid, d.domainname, p.Depth + 1,
                        CAST(SortCol + CAST(d.domainid AS binary(4)) AS varbinary(max))
              FROM @t AS d
                        JOIN CTE AS p
                          ON d.parentdomainid = p.domainid
            )
            SELECT domainid, parentdomainid, domainname, Depth, REPLICATE('--', Depth) + domainname as displayname
            FROM CTE
            ORDER BY SortCol;

这篇关于如何显示一个DropDownList分层数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆