void item_Expanded(object sender, RoutedEventArgs e) { TreeViewItem item = e.Source as TreeViewItem; if (item.HasItems && (item.Items[0] as TreeViewItem).Header.ToString() == "更多") { //先移除为使该节点具有折叠的"+"而添加的虚假的子节点 item.Items.Clear(); MyTreeNode node = item.Tag as MyTreeNode; List <MyTreeNode> childrenNodes = MyTrees.GetNodes_ByTopId(node.SysId); foreach (MyTreeNode subNode in childrenNodes) { TreeViewItem subItem = NewTreeViewItem(subNode); item.Items.Add(subItem); //如果子节点还有孙子节点,则添加一个虚假的孙节点,使该子节点具有折叠的"+" if (subNode.ChildrenCount > 0) { subItem.Items.Add(NewTreeViewItem(null)); } WindowView.notify.SetStatusMessage("正在展开节点" + subItem.Header); } } }
//显示上一级节点 private void btnUpLevelNode_Click(object sender, RoutedEventArgs e) { TreeViewItem oldRootItem = memberTreeView.Items[0] as TreeViewItem; MyTreeNode oldRootNode = oldRootItem.Tag as MyTreeNode; MyTreeNode newRootNode = MyTrees.GetNodeBySysId(oldRootNode.TopId); if (isRingClose(newRootNode.SysId)) { return; } //先移除旧的根节点 memberTreeView.Items.Remove(oldRootItem); //添加新的根节点 TreeViewItem newRootItem = NewTreeViewItem(newRootNode); memberTreeView.Items.Add(newRootItem); newRootItem.IsExpanded = true; //新的根节点添加子节点 List <MyTreeNode> childrenNodes = MyTrees.GetNodes_ByTopId(newRootNode.SysId); bool hasNotAdded = true; foreach (MyTreeNode subNode in childrenNodes) { if (hasNotAdded) { if (oldRootNode.SysId == subNode.SysId) { newRootItem.Items.Add(oldRootItem); hasNotAdded = false; continue; } } TreeViewItem subItem = NewTreeViewItem(subNode); newRootItem.Items.Add(subItem); //如果子节点还有孙子节点,则添加一个虚假的孙节点,使该子节点具有折叠的"+" if (subNode.ChildrenCount > 0) { subItem.Items.Add(NewTreeViewItem(null)); } } //判断当前根节点是否存在父节点 if (MyTrees.GetNodeBySysId(newRootNode.TopId) != null) { btnUpLevelNode.IsEnabled = true; btnUpRootNode.IsEnabled = true; } else { btnUpLevelNode.IsEnabled = false; btnUpRootNode.IsEnabled = false; } }
void item_Expanded(TreeNode tn) { MyTreeNode node = tn.Tag as MyTreeNode; if (node != null) { List <MyTreeNode> childrenNodes = MyTrees.GetNodes_ByTopId(node.SysId);; foreach (MyTreeNode subNode in childrenNodes) { Button grandson = NewTreeViewItem(subNode); TreeNode newNode = memberTreeView.AddNode(grandson, tn); newNode.Tag = subNode; newNode.Collapsed = true; } } }
void item_Expanded(object sender, RoutedEventArgs e) { TreeViewItem item = e.Source as TreeViewItem; //foreach (TreeViewItem subItem in item.Items) //{ MyTreeNode node = item.Tag as MyTreeNode; if (node != null) { List <MyTreeNode> childrenNodes = MyTrees.GetNodes_ByTopId(node.SysId); foreach (MyTreeNode subNode in childrenNodes) { TreeViewItem grandson = NewTreeViewItem(subNode); item.Items.Add(grandson); } } //} }
private static void Export2CSVImp(StreamWriter mysw, StringBuilder allLines, MyTreeNode node, bool recu) { if (isRingClose(node.SysId)) { return; } allLines.Clear(); allLines.Append(node.SysId); allLines.Append(","); allLines.Append(node.TopId); allLines.Append(","); allLines.Append(node.Name); allLines.Append(","); allLines.Append(node.Level); allLines.Append(","); allLines.Append(node.ChildrenLevels); allLines.Append(","); allLines.Append(node.ChildrenNodes.Count); allLines.Append(","); allLines.Append(node.ChildrenCount); foreach (string otherProp in node.OtherProps) { allLines.Append(","); allLines.Append(otherProp); } mysw.WriteLine(allLines.ToString()); row++; if (row % 100 == 0) { WindowView.notify.SetProcessBarValue((int)(100.0 * row / allRow)); WindowView.notify.SetStatusMessage("正在导出第" + row + "个节点(总共" + allRow + "个节点)"); } if (recu) { List <MyTreeNode> childrenNodes = MyTrees.GetNodes_ByTopId(node.SysId); foreach (MyTreeNode subNode in childrenNodes) { Export2CSVImp(mysw, allLines, subNode, recu); } } }
private void InitMyTree() { //加载正确的节点 List <MyTreeNode> roots = new List <MyTreeNode>(); // if (MyTreeNode.AllNodes.ContainsKey(1)) // { // roots.AddRange(MyTreeNode.AllNodes[1].Values); // } foreach (MyTreeNode node in roots) { TreeViewItem rootItem = NewTreeViewItem(node); rootItem.Expanded += item_Expanded; rootItem.Collapsed += item_Collapsed; memberTreeView.Items.Add(rootItem); List <MyTreeNode> childrenNodes = MyTrees.GetNodes_ByTopId(node.SysId); foreach (MyTreeNode subNode in childrenNodes) { TreeViewItem subItem = NewTreeViewItem(subNode); rootItem.Items.Add(subItem); } } //将错误节点也加上 // foreach (string item in MyTreeNode.ErrNodes.Keys) // { // TreeViewItem errRootItem = new TreeViewItem(); // errRootItem.Header = item; // errRootItem.ToolTip = "下线人数:" + MyTreeNode.ErrNodes[item].Count; // memberTreeView.Items.Add(errRootItem); // foreach (MyTreeNode errNode in MyTreeNode.ErrNodes[item]) // { // TreeViewItem errItem = new TreeViewItem(); // errItem.Header = errNode.RealName; // errItem.ToolTip = "Id:" + errNode.SysId + ",级别:" + errNode.Layer + ",出错行数:" + errNode.DescendantCount; // errRootItem.Items.Add(errItem); // } // } }