
- 加为好友
- 发送私信
- 在线聊天
|
| 发表于:2008-04-25 09:40:481楼 得分:30 |
protected void Page_Load(object sender, EventArgs e) { string strNodeValue = "1,2,43,44,3,49,4,53"; if (!IsPostBack) LoadData(strNodeValue); } public void LoadData(String strNodeValue) { strNodeValue = "," + strNodeValue + ","; TreeView1.Nodes.Clear(); DataTable DT = new DataTable(); #region 模拟一些测试数据 //注:数据从数据读取一次就够了,没必要在递归调用中多次读取-这样性能太低 DT.Columns.Add("FilesName"); DT.Columns.Add("FileID"); DT.Columns.Add("PreID"); DT.Rows.Add(new object[] {"aaaaa",1,0 }); DT.Rows.Add(new object[] { "bbbbb", 2, 0 }); DT.Rows.Add(new object[] { "ccccc", 3, 0 }); DT.Rows.Add(new object[] { "eeeee", 4, 0 }); DT.Rows.Add(new object[] { "fffff", 5, 0 }); DT.Rows.Add(new object[] { "ggggg", 6, 10 }); DT.Rows.Add(new object[] { "hhhhh", 7, 1 }); DT.Rows.Add(new object[] { "iiiii", 8, 1 }); DT.Rows.Add(new object[] { "jjjjj", 9, 3 }); DT.Rows.Add(new object[] { "kkkkk", 10, 2 }); DT.Rows.Add(new object[] { "llllll", 11, 10 }); DT.Rows.Add(new object[] { "mmmmmm", 43, 2 }); DT.Rows.Add(new object[] { "nnnnnn", 44, 2 }); DT.Rows.Add(new object[] { "oooooo", 53, 4 }); DT.AcceptChanges(); #endregion DataRow[] rows = DT.Select("[preID]=0"); foreach (DataRow treeRowRoot in rows) { TreeNode rootNode = new TreeNode(); rootNode.Text = treeRowRoot["FilesName"].ToString(); rootNode.Value = treeRowRoot["FileID"].ToString(); TreeView1.Nodes.Add(rootNode); int pid = int.Parse(treeRowRoot["FileID"].ToString()); DT.Rows.Remove(treeRowRoot); if (strNodeValue.IndexOf("," + pid.ToString() + ",") > -1) rootNode.Checked = true; CreateNode(rootNode, pid, DT, strNodeValue); } } public void CreateNode(TreeNode parentnode, int preID, DataTable DT, string strNodeValue) { DataRow[] rows = DT.Select("[preID]='"+preID.ToString()+"'"); foreach (DataRow rw in rows) { TreeNode childnode = new TreeNode(); childnode.Text = rw["FilesName"].ToString(); childnode.Value = rw["FileID"].ToString(); parentnode.ChildNodes.Add(childnode); int pid = int.Parse(rw["FileID"].ToString()); DT.Rows.Remove(rw); if (strNodeValue.IndexOf("," + pid.ToString() + ",") > -1) { childnode.Parent.Expand(); childnode.Checked = true; } CreateNode(childnode, pid, DT, strNodeValue); } } | | |
修改
删除
举报
引用
回复
| |