A simple generic TreeList






4.67/5 (5 votes)
Convert a generic list of (recursive) objects into a simple hierarchical TreeList
Description
An easy way to convert a generic list into a hierarchical treelist.
Using the code
//A list of nested categories
List<Category> items = getItems();
TreeView<Category> tv = items.ToTreeView(
c => c.Id, //Primary key
c => c.ParentId //Foreign key
);
TreeControl1.SetDataSource(
tv, //Items
c => c.Title, //DisplayMember
c => "javascript:alert('" + c.Title + " (id: " + c.Id.ToString() + ")');" //ValueMember
);
//A list of nested directories
TreeList<string> tree = getFolderTree(foldername);
TreeControl2.SetDataSource(
tree, //Items
s => s.Substring(s.LastIndexOf("\\") + 1), //DisplayMember
s => "javascript:alert('" + Server.HtmlEncode(s).Replace(@"\", @"\\") + "');" //ValueMember
);
private TreeList<string> getFolderTree(string folder) {
string[] folders = Directory.GetDirectories(folder);
TreeList<string> tree = new TreeList<string>();
foreach (string dir in folders) {
tree.Add(dir, folder);
tree.AddRange(getFolderTree(dir));
}
return tree;
}