关于如何递归给TreeView从数据库中循环绑定数据
数据库的模式 是这样的。基本一个ID,和一个ParentId来区分上下级
后台用递归简单两步就可以实现绑定。
public void AddTree(int ParentId, TreeNode pNode, List<FileModel> list)
{
for (int i = 0; i < list.Count; i++)
{
TreeNode node1 = new TreeNode();
if (pNode == null)//判断是否为主节点
{
if (ParentId == list[i].ParentId)
{
node1.Text = list[i].FileName;
node1.Value = list[i].Id.ToString();
tw1.Nodes.Add(node1);
AddTree(list[i].Id, node1, list);
}
}
else//子节点处理
{
if (ParentId == list[i].ParentId)
{
node1.Text = list[i].FileName;
node1.Value = list[i].Id.ToString();
pNode.ChildNodes.Add(node1);
AddTree(list[i].Id, node1, list);
}
}
}
}
调用的时候用
if (!IsPostBack)
{
List<FileModel> list = FileManager.GetAllFileForDictory();
AddTree(0, (TreeNode)(null), list);//这个list数据源是为了只读取数据方便,只读取一次。在调用方法中直接操作。
//上面的AddTree中第一个0代表处于最高级。如果是文件夹的话,就是最外层的意思。
tw1.ExpandAll();
}
转自: http://wenku.baidu.com/link?url=GR_0lGf5-Fj-8GGY3NZKl-cGYFsTCoHd6cuJzU8sfRwp-huA8prtjW0MFHKPGTBV0M6i3x6UEIUeqtR3QRPyJdkRaWryQYkT8PerUXjZOs7