Hey all,
I am trying to build a nested/threaded comment system in ASP.NET. I don't know how the PHP guys do it. Its much harder than first imagined.
I am trying my damnedest get Hierarchical data to output to the user, but its not working.
I have a table with text, a itemID and a parentID.
I want to display the information in a tree view format, but asp.net's standard control just doesn't work...
Can anyone point me in the right direction of how to output this into a treeview. I have tried nesting repeaters, straight out html building from codebehind and the treeview control.
I still haven't found a solution... Can anyone help me out?
-
As I understand it, if you have a database table with hierarchical data, you have two options: create your own custom data source, or programmatically bind the treeview to the database table.
I don't have code for you, but you could use following these steps:
- declare treeview control within asp.net page
- populate a DataTable (via a SqlDataAdapter) with your heirarchical data (SELECT itemID, parentID FROM...)
- use that same DataTable to create a DataView of top-level items (parentID will be null)
- for each row of the DataView, recursively add treeview items by filtering another DataView where each DataViewRow's parentID is equal to the row you're looping through in step 4
pretty much all of this is done using TreeView.Nodes.Add(theNewNode), where theNewNode is an instance of the TreeNode object
I know this all sounds very confusing, but I've done it in the past. I found great info in Stephen Walther ASP.NET Unleashed book, which has entire sections devoted to accomplishing this.
-
I will look into the book, I have a copy I can access online, but I am looking to build my own treeview control.
The current control requires that you have links....
I am not looking for a treeview which requires links. I am looking for a treeview that allows you to edit the content of the node completely...
Thats why I want to build on my self. Any suggestions?
-
Quickly, by head (could not check in VS2k8 now), I would do it something like this using Linq to SQL
private void BuildTree() { List<Item> items = from item in dataContext.Items select item; List<Item> rootItems = items.FindAll(p => p.ParentID == null ); foreach ( Item item in rootItems ) { TreeViewNode tvi = new TreeViewNode(item.text); BuildChildNodes(tvi, items, item.ID); YourTreeNodeName.Nodes.Add(tvi); } } private void BuildChildNodes(TreeViewNode parentNode, List<Item> items, long parentID) { List<Item> children = items.FindAll ( p => p.ParentID = parentID ); foreach( Item item in children) { TreeViewNode tvi = new TreeViewNode(item.text); parentNode.Nodes.Add(tvi); BuildChildNodes(tvi, items, item.ID); } }
-
That was it, thank you.
That worked perfectly even though, I wasn't using a tree view.
0 comments:
Post a Comment