操作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
    评论
add_issue_to_excel(sheet, "A0002", "问题2", "提出人2", "处理人2", "processing") add_issue_to_excel(sheet, "A0003", "问题3", "提出人3", "处理人3", "好的,你可以按照如下步骤来实现TreeView控件选择一个节点,将该节点的文本close") # 测试按提出人汇总的问题单行数 count_by_raised_by = count_issues_by_raised_by(sheet) assert count_by_raised_by["提出人1"]["processing"] == 1 assert count_by_raised_by信息显示在一个文本框: 1. 在窗体上添加一个TreeView控件和一个TextBox控件。 2. 在["提出人1"]["close"] == 0 assert count_by_raised_by["提出人2"]["processing"] == 1 assert count_by_raised_by["提出人2"]["close"] == 0 assert count_by_raised_by["TreeView控件的Nodes节点集合添加一些节点。 3. 在TreeView控件的AfterSelect事件编写代码,提出人3"]["processing"] == 0 assert count_by_raised_by["提出人3"]["close"] == 1将选择节点的文本信息显示在TextBox控件。 下面是示例代码: ```csharp private void tree # 测试按处理人汇总的问题单行数 count_by_assigned_to = count_issues_by_assigned_to(sheet) assert count_by_assigned_to["处理人1"]["processing"] == 1 assert count_by_assigned_to["处理人1"]["closeView1_AfterSelect(object sender, TreeViewEventArgs e) { textBox1.Text = e.Node.Text; } ``` 在这个"] == 0 assert count_by_assigned_to["处理人2"]["processing"] == 1 assert count_by_assigned_to["处理人2"]["close"] == 0 assert count_by_assigned_to["处理人3"]["processing"] == 0 assert示例代码,我们通过AfterSelect事件获取了当前选择节点,并将节点的文本信息显示在了TextBox控件 count_by_assigned_to["处理人3"]["close"] == 1 # 测试总体汇总的问题单行数 。你可以根据自己的需求来修改代码,实现更多的功能。希望这能帮到你 count = count_issues(sheet) assert count["processing"] == 2 assert count["close"] == 1 # 测试!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值