WFA - 来自SQL Server的C#和TreeView

时间:2017-06-02 08:25:46

标签: c# sql-server treeview

我在Windows应用程序中使用SQL Server和C#填充了一个treeView控件:

CREATE TABLE [dbo].[myTable]
(
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [title] [varchar](255) NOT NULL,
    [parentID] [int] NULL, 

    CONSTRAINT [PK_myTable] 
        PRIMARY KEY CLUSTERED ([ID] ASC)
)

插入一些分层数据

SET IDENTITY_INSERT myTable ON 
GO 

INSERT INTO myTable(ID, title, parentID) 
VALUES(1, 'Microsoft', NULL) 

INSERT INTO myTable(ID, title, parentID) 
VALUES(2, 'C#', 1) 

INSERT INTO myTable(ID, title, parentID) 
VALUES(3, 'VB.net', 1) 

INSERT INTO myTable(ID, title, parentID) 
VALUES(4, 'Open Source', NULL) 

INSERT INTO myTable(ID, title, parentID) 
VALUES(5, 'Python', 4) 

INSERT INTO myTable(ID, title, parentID) 
VALUES(6, 'Ruby', 4) 

INSERT INTO myTable(ID, title, parentID) 
VALUES(7, 'PHP', 4) 

INSERT INTO myTable(ID, title, parentID) 
VALUES(8, 'Perl', 4) 

INSERT INTO myTable(ID, title, parentID) 
VALUES(9, 'Java', 4) 

INSERT INTO myTable(ID, title, parentID) 
VALUES(10, 'LinQ', 2) 

INSERT INTO myTable(ID, title, parentID) 
VALUES(11, '5.2', 7) 

INSERT INTO myTable(ID, title, parentID) 
VALUES(12, '4.4', 7) 
GO 

SET IDENTITY_INSERT myTable OFF 
GO

定义根值

CREATE PROCEDURE viewMyTable 
AS 
BEGIN
    SELECT ID, title, ISNULL(parentID, 0) AS parentID
    FROM myTable 
END

添加相同的表键约束。

ALTER TABLE [dbo].[myTable] WITH CHECK 
    ADD CONSTRAINT [FK_myTable_myTable] 
    FOREIGN KEY([parentID]) REFERENCES [dbo].[myTable] ([ID]) 
GO 

ALTER TABLE [dbo].[myTable] CHECK CONSTRAINT [FK_myTable_myTable]

树视图中没有任何内容。谁能帮我?

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

希望这对你有所帮助。

WITH f(ID, Title, Level, Sort)
AS(
    SELECT ID, Title, 0 AS Level, ROW_NUMBER() OVER(ORDER BY ID) AS Sort
    FROM myTable
    WHERE parentID IS NULL

    UNION ALL

    SELECT B.ID, B.Title, A.Level + 1, A.Sort
    FROM f A, myTable B
    WHERE A.Id = B.parentID
)
SELECT * 
FROM f 
ORDER BY Sort, Level