操作TreeView:,选中左边树的节点,点击>>按钮 将选择的节点展现到右边的树中,同时将选择的节点从左边的树中移除。。点击<<实现同样的功能。。。。

 
HTML code
    
    
< table width ="500px" > < tr > < td > < asp:TreeView ID ="leftTv" runat ="server" > </ asp:TreeView > </ td > < td > < asp:Button ID ="rightBtn" runat ="server" Text =">>" onclick ="rightBtn_Click" />< br /> < asp:Button ID ="leftBtn" runat ="server" Text ="<<" onclick ="leftBtn_Click" /> </ td > < td > < asp:TreeView ID ="rightTv" runat ="server" > </ asp:TreeView > </ td > </ tr > </ table >


C# code
    
    
IDictionary < string , bool > dic = new Dictionary < string , bool > ( 20 ); List < TreeNode > rightList, leftList; // = new List<TreeNode>(); private void Init() { TreeNode root = new TreeNode( " aaa " , " 1 " ); dic.Add(root.Value, true ); TreeNode childNode = new TreeNode( " aaaa " , " 2 " ); dic.Add(childNode.Value, true ); childNode.ChildNodes.Add( new TreeNode( " aaaaa " , " 3 " )); dic.Add( " 3 " , true ); root.ChildNodes.Add(childNode); childNode = new TreeNode( " aaab " , " 4 " ); dic.Add(childNode.Value, true ); root.ChildNodes.Add(childNode); leftTv.Nodes.Add(root); root = new TreeNode( " bbb " , " 5 " ); dic.Add(root.Value, true ); childNode = new TreeNode( " bbbb " , " 6 " ); dic.Add(childNode.Value, true ); root.ChildNodes.Add(childNode); leftTv.Nodes.Add(root); root = new TreeNode( " ccc " , " 7 " ); dic.Add(root.Value, true ); leftTv.Nodes.Add(root); ViewState[ " dic " ] = dic; } protected void Page_Load( object sender, EventArgs e) { if ( ! IsPostBack) { Init(); } else { dic = ViewState[ " dic " ] as IDictionary < string , bool > ; } } private void RecursionNode(TreeNode node, IList < TreeNode > list) { foreach (TreeNode tn in node.ChildNodes) { list.Add(tn); RecursionNode(tn, list); } } protected void rightBtn_Click( object sender, EventArgs e) { TreeNode node; if ((node = leftTv.SelectedNode) != null ) { rightList = new List < TreeNode > (); foreach (TreeNode tn in rightTv.Nodes) { rightList.Add(tn); RecursionNode(tn, rightList); } // Add ParentNode IList < TreeNode > list = new List < TreeNode > (); while (node.Parent != null ) { node = node.Parent; // 如果设置了其他属性的话,需要为其他属性赋值 或者使用深拷贝 list.Add( new TreeNode(node.Text, node.Value)); } // 设置状态 // RecursionAddNode(leftTv.SelectedNode, false); if (list.Count > 0 ) { TreeNode temp; for ( int i = list.Count - 1 ; i > - 1 ; i -- ) { if (i - 1 > - 1 ) { if ((temp = rightList.Find(n => n.Value == list[i - 1 ].Value)) != null ) { list[i].ChildNodes.Add(temp); } else { list[i].ChildNodes.Add(list[i - 1 ]); } } } if (rightList.Find(n => n.Value == list[list.Count - 1 ].Value) == null ) { rightTv.Nodes.Add(list[list.Count - 1 ]); } if ((temp = rightList.Find(n => n.Value == list[ 0 ].Value)) != null ) { if ( ! rightList.Exists(n => n.Value == leftTv.SelectedNode.Value)) { temp.ChildNodes.Add(leftTv.SelectedNode); } else { new TreeNode().ChildNodes.Add(leftTv.SelectedNode); } } else { list[ 0 ].ChildNodes.Add(leftTv.SelectedNode); } } else { if (rightList.Find(n => n.Value == leftTv.SelectedNode.Value) == null ) { rightTv.Nodes.Add(leftTv.SelectedNode); } else { leftTv.Nodes.Remove(leftTv.SelectedNode); } } rightTv.ExpandAll(); } } protected void leftBtn_Click( object sender, EventArgs e) { TreeNode node; if ((node = rightTv.SelectedNode) != null ) { leftList = new List < TreeNode > (); foreach (TreeNode tn in leftTv.Nodes) { leftList.Add(tn); RecursionNode(tn, leftList); } // Add ParentNode IList < TreeNode > list = new List < TreeNode > (); while (node.Parent != null ) { node = node.Parent; // 如果设置了其他属性的话,需要为其他属性赋值 或者使用深拷贝 list.Add( new TreeNode(node.Text, node.Value)); } // 设置状态 // RecursionAddNode(rightTv.SelectedNode, false); if (list.Count > 0 ) { TreeNode temp; for ( int i = list.Count - 1 ; i > - 1 ; i -- ) { if (i - 1 > - 1 ) { if ((temp = leftList.Find(n => n.Value == list[i - 1 ].Value)) != null ) { list[i].ChildNodes.Add(temp); } else { list[i].ChildNodes.Add(list[i - 1 ]); } } } if (leftList.Find(n => n.Value == list[list.Count - 1 ].Value) == null ) { leftTv.Nodes.Add(list[list.Count - 1 ]); } if ((temp = leftList.Find(n => n.Value == list[ 0 ].Value)) != null ) { if ( ! leftList.Exists(n => n.Value == rightTv.SelectedNode.Value)) { temp.ChildNodes.Add(rightTv.SelectedNode); } else { new TreeNode().ChildNodes.Add(rightTv.SelectedNode); } } else { list[ 0 ].ChildNodes.Add(rightTv.SelectedNode); } } else { if (leftList.Find(n => n.Value == rightTv.SelectedNode.Value) == null ) { leftTv.Nodes.Add(rightTv.SelectedNode); } else { rightTv.Nodes.Remove(rightTv.SelectedNode); } } leftTv.ExpandAll(); } }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值