积极答复者
如何根据登录用户所在的部门展开树!(十万火急)

问题
-
各位大虾:
明天要交项目了,现在有个问题一直没搞定,就是除了当前登录用户所在的部门树展开以外,其它的部门不展开,请问如何实现阿?最好有源码,谢谢!- 已移动 Sheng Jiang 蒋晟Moderator 2009年4月23日 19:05 Windows表单类库问题
- 已移动 孟宪会Moderator 2009年4月29日 23:49 ([Loc]From:.NET Framework 一般性问题讨论区)
答案
-
你的情况,可能是在根节点调用了ExpandAll(),你把 ExpandAll 换成 Expand()
private void Form_Load(object sender, EventArgs e) { TreeView fTreeView = new TreeView(); TreeNode fTreeNode0 = new TreeNode("A0"); TreeNode fTreeNode1 = new TreeNode("A1"); TreeNode fTreeNode2 = new TreeNode("A2"); TreeNode fTreeNode3 = new TreeNode("A3"); TreeNode fTreeNode4 = new TreeNode("A4"); TreeNode fTreeNode5 = new TreeNode("A5"); BuildNodes(fTreeNode1.Nodes); BuildNodes(fTreeNode2.Nodes); BuildNodes(fTreeNode3.Nodes); BuildNodes(fTreeNode4.Nodes); BuildNodes(fTreeNode5.Nodes); fTreeNode0.Nodes.Add(fTreeNode1); fTreeNode0.Nodes.Add(fTreeNode2); fTreeNode0.Nodes.Add(fTreeNode3); fTreeNode0.Nodes.Add(fTreeNode4); fTreeNode0.Nodes.Add(fTreeNode5); fTreeView.Nodes.Add(fTreeNode0); fTreeView.Dock = DockStyle.Fill; this.Controls.Add(fTreeView); fTreeView.Nodes[0].Expand(); fTreeNode4.Expand(); fTreeNode4.ExpandAll(); } private void BuildNodes(TreeNodeCollection fConnection) { for (int i = 0; i < 5; i++) fConnection.Add(i.ToString()); }
知识改变命运,奋斗成就人生!- 已标记为答案 KeFang Chen 2009年4月22日 2:54
全部回复
-
不行啊,以下是我的源代码,请大家帮忙,谢谢!
//判断节点并收缩 protected void TreeView1_TreeNodeExpanded(object sender, TreeNodeEventArgs e) { if (TreeView1.SelectedNode == null) { TreeNodeCollection ts = null; if (e.Node.Parent == null) { ts = ((TreeView)sender).Nodes; } else { ts = e.Node.ChildNodes; } foreach (TreeNode node in ts) { if (Session["Dment_No"] != null) { string Dment_No = Session["Dment_No"].ToString(); string nodeSV = node.Value; if (Dment_No == "admin") { } if (nodeSV == "1") { } if (Dment_No != nodeSV && nodeSV != "1") { node.CollapseAll(); } if (Dment_No == nodeSV) { Font f1 = new Font("宋体", 12); Font f = new Font("宋体", 14, FontStyle.Bold); node.Text = "<b>" + node.Text + "</b>"; node.ExpandAll(); } } } } else { TreeView1.SelectedNode.ExpandAll(); } } }
-
你的情况,可能是在根节点调用了ExpandAll(),你把 ExpandAll 换成 Expand()
private void Form_Load(object sender, EventArgs e) { TreeView fTreeView = new TreeView(); TreeNode fTreeNode0 = new TreeNode("A0"); TreeNode fTreeNode1 = new TreeNode("A1"); TreeNode fTreeNode2 = new TreeNode("A2"); TreeNode fTreeNode3 = new TreeNode("A3"); TreeNode fTreeNode4 = new TreeNode("A4"); TreeNode fTreeNode5 = new TreeNode("A5"); BuildNodes(fTreeNode1.Nodes); BuildNodes(fTreeNode2.Nodes); BuildNodes(fTreeNode3.Nodes); BuildNodes(fTreeNode4.Nodes); BuildNodes(fTreeNode5.Nodes); fTreeNode0.Nodes.Add(fTreeNode1); fTreeNode0.Nodes.Add(fTreeNode2); fTreeNode0.Nodes.Add(fTreeNode3); fTreeNode0.Nodes.Add(fTreeNode4); fTreeNode0.Nodes.Add(fTreeNode5); fTreeView.Nodes.Add(fTreeNode0); fTreeView.Dock = DockStyle.Fill; this.Controls.Add(fTreeView); fTreeView.Nodes[0].Expand(); fTreeNode4.Expand(); fTreeNode4.ExpandAll(); } private void BuildNodes(TreeNodeCollection fConnection) { for (int i = 0; i < 5; i++) fConnection.Add(i.ToString()); }
知识改变命运,奋斗成就人生!- 已标记为答案 KeFang Chen 2009年4月22日 2:54
-
各位大虾:
我希望能够实现除了当前登录用户所在的部门班组树展开以外,其它部门的树收起来。我现在只能实现所有的树都展开到第二节点时才能展开当前登录用户所在部门班组的树,如果其它部门班组不展开到第二级的话,我所有的树都不能展开,请问如何处理阿?最好有源码,谢谢! 我的代码如下:
//判断节点并收缩 protected void TreeView1_TreeNodeExpanded(object sender, TreeNodeEventArgs e) { if (TreeView1.SelectedNode == null) { TreeNodeCollection ts = null; if (e.Node.Parent == null) { ts = ((TreeView)sender).Nodes; } else { ts = e.Node.ChildNodes; } foreach (TreeNode node in ts) { if (Session["Dment_No"] != null) { string Dment_No = Session["Dment_No"].ToString(); string nodeSV = node.Value; if (Dment_No == "admin") { } if (nodeSV == "1") { } if (Dment_No != nodeSV && nodeSV != "1") { node.CollapseAll(); } if (Dment_No == nodeSV) { Font f1 = new Font("宋体", 12); Font f = new Font("宋体", 14, FontStyle.Bold); node.Text = "<b>" + node.Text + "</b>"; node.ExpandAll(); } } } } else { TreeView1.SelectedNode.ExpandAll(); } } }
- 已编辑 bigertiger 2009年4月29日 2:33
- 已移动 孟宪会Moderator 2009年4月29日 12:53 ([Loc]From:.NET Framework 一般性问题讨论区)
- 已合并 Sheng Jiang 蒋晟Moderator 2009年4月29日 18:14
-
各位大虾:
我希望能够实现除了当前登录用户所在的部门班组树展开以外,其它部门的树收起来。我现在只能实现所有的树都展开到第二节点时才能展开当前登录用户所在部门班组的树,如果其它部门班组不展开到第二级的话,我所有的树都不能展开,请问如何处理阿?最好有源码,谢谢! 我的代码如下:
//判断节点并收缩 protected void TreeView1_TreeNodeExpanded(object sender, TreeNodeEventArgs e) { if (TreeView1.SelectedNode == null) { TreeNodeCollection ts = null; if (e.Node.Parent == null) { ts = ((TreeView)sender).Nodes; } else { ts = e.Node.ChildNodes; } foreach (TreeNode node in ts) { if (Session["Dment_No"] != null) { string Dment_No = Session["Dment_No"].ToString(); string nodeSV = node.Value; if (Dment_No == "admin") { } if (nodeSV == "1") { } if (Dment_No != nodeSV && nodeSV != "1") { node.CollapseAll(); } if (Dment_No == nodeSV) { Font f1 = new Font("宋体", 12); Font f = new Font("宋体", 14, FontStyle.Bold); node.Text = "<b>" + node.Text + "</b>"; node.ExpandAll(); } } } } else { TreeView1.SelectedNode.ExpandAll(); } } }
- 已移动 Sheng Jiang 蒋晟Moderator 2009年4月29日 18:00 软件设计问题 ([Loc]From:Visual C#)
- 已合并 Sheng Jiang 蒋晟Moderator 2009年4月29日 18:14
-
你好,你参考一下我的代码
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.BuildDirectoryTree(this.TreeView1.Nodes, Guid.Empty); } } private void BuildDirectoryTree(TreeNodeCollection fNodes, Guid fParentDirectoryKey) { foreach (TreeDataSet.DirectoryRow fDirectoryRow in TreeManager.TreeDataSet.Directory.Select(string.Format("ParentDirectoryKey = '{0}'", fParentDirectoryKey))) { TreeNode fNode = new TreeNode(); fNode.Expanded = false; fNode.Text = fDirectoryRow.Name; fNodes.Add(fNode); if (fNode.Text == "Credentials") // 这个判断改成判断部门 { TreeNode t = fNode; while (t != null) { t.Expand(); t = t.Parent; } } this.BuildDirectoryTree(fNode.ChildNodes, fDirectoryRow.DirectoryKey); } }
知识改变命运,奋斗成就人生!