一个简单的通用 TreeList






4.67/5 (5投票s)
将(递归)对象的通用列表转换为简单的分层 TreeList
描述
一种将通用列表转换为分层树形列表的简单方法。
使用代码
//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;
}