I have populating a treeView control in a windows application using SQL Server and C#:
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)
)
Insert some hierarchal data
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
Define a root value
CREATE PROCEDURE viewMyTable
AS
BEGIN
SELECT ID, title, ISNULL(parentID, 0) AS parentID
FROM myTable
END
Add a same table key contraint.
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]
And there is nothing in treeview. Can anyone help me?
Hope this help you.
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
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.