I’ve got a database that looks like this:
ID Name ParentID
1 1 0
2 1A 1
3 1B 1
4 1C 1
5 2 0
6 2A 5
7 2B 5
8 2B1 7
9 2B2 7
10 2B3 7
ParentID points to the ID field so that ID 2 is the child of ID 1.
Unfortunately, the order of the db elements is not guaranteed but what I’d like to do is have the information displayed sort of like in windows explorer with the children directly underneath the parents.
I’ve done something similar in the past with nested gridviews (ugh!), but it didn’t point to itself and I knew how many children (additional db tables) there would be in advance. I’m basically trying to re-create that setup but make it much more flexible by making it point to itself.
Pseudo Coding I’d do something like:
- Setup the html table and table headers
- Go through the DB from the top and search for the row with ParentID = 0
- Add that row to the table
- Go through the db and find the row where ParentID = ID of Step 2)
- Add that row to the table
- Recursive magic go back to 4
- Keep going deeper inception style ^^
- Recursive magic go back to 2
I just have no idea how to even begin doing something like this!
This has nothing to do with my problem, but so you know where I’m going with this: after I get the table/gridview setup in the correct order, I plan on using jquery to hide all the non 0 parentID rows and make the rows clickable so that the child rows expand out underneath the parent row.
Thank you!
Use a tree view and create the treenodes recursevly, the method you described seems to be the approach I’d use as well.