Hierarchical results in ASP.NET GridView
Here is one technique that I use in ASP.NET to show hierarchical data like categories tree, sitemaps listing, department/user-levels, etc. A GridView control is used instead of a TreeView control. The method does not require any complex coding and loops; and also does not require any xml file generation. It does, however, require a good stored-procedure (or a db script) to give a sorted resultset.
Lets start with the database table, Categories, which we have like shown below.
CategoryID is the primary key. ParentID is id of parent category, and if zero it is considered to be top level category.

First requirement is to get resultset sorted as per required. Here is a stored procedure code, which will populate the sorted resultset. This code works for three levels of depth of the categories. It can be easily changed to higher levels by adding Sort# column in the temp table and and writing additional INSERT INTO statement. One limitation of the query is that it does not handle infinite depth level.

Here is a sample resultset from the SP script:

Rest of the process in the UI is very simple. A GridView control is used and is databound to the above SP. Also, three CSS classes are required for each three levels. Then all we need to do is to define ItemTemplate of the GridView. CSS and ASPX codes are shown below:


Here is the result page from the above codes.

Very Good Thanks
Ray
March 3, 2008
Great!!
Padam Raj
June 25, 2008
Very nice article. It has helped us a lot. Thank You
Joe
July 18, 2008
It helped me. Thanks
Raj
August 22, 2008
will you please publish the code ?
Gnyanendra
November 5, 2008
Hi Vinay,
Can you Provide the script for table with data
Ravi Garg
November 13, 2008
just wanna say thank you. there are so many solutions out there. but yours is simple but the most effective!
Tina
January 6, 2009
Excellent Thanks a lot Really Help full.
Khem Raj Bhattarai
March 25, 2009
Can you Please put + and – so it can be expandable or minimizable depending on what user wants.
sanjeef kumar
May 29, 2009