精华内容
下载资源
问答
  • ASP.Net Treeview删除一级节点 问题背景:需要根据权限隐藏菜单,即删除一级节点 代码详情: treeViewMenu.Nodes.Remove(treeViewMenu.Nodes[2]); 解释:treeview对象.Nodes.Remove(你要删除的一级节点) 运行结果:...

    ASP.Net Treeview删除一级节点

    问题背景:需要根据权限隐藏菜单,即删除一级节点
    代码详情:

    treeViewMenu.Nodes.Remove(treeViewMenu.Nodes[2]);
    

    解释:treeview对象.Nodes.Remove(你要删除的一级节点)
    运行结果:
    1.非管理员权限不显示用户管理
    在这里插入图片描述
    2.管理员显示用户管理模块
    在这里插入图片描述

    展开全文
  • treeview每次添加或者删除节点时,重新指定数据源时再指定回原先选择的项 treeView.ItemsSource = m_DataSource; //这里的m_DataSource是你treeView的数据源 foreach (var item in treeView.Items) { var ...

    在treeview每次添加或者删除节点时,重新指定数据源时再指定回原先选择的项

    			treeView.ItemsSource = m_DataSource;  //这里的m_DataSource是你treeView的数据源
    
                foreach (var item in treeView.Items)
                {
                    var tvi = treeView.ItemContainerGenerator.ContainerFromItem(item);
                    if (tvi == null)
                        continue;
                    SetSelect((TreeViewItem)tvi, lastSelectItem); //这里的lastSelectItem是你刷新前最后选中的项
                }
    
    	    private void SetSelect(TreeViewItem tvi, Model data)  //这里的Model是你的treeview对应的模型
            {
                if (tvi.Items.Count > 0)
                {
                    foreach (var item in tvi.Items)
                    {
                        tvi.UpdateLayout(); //一定要加这句,否则下一句获得的tviChild 会为null
                        var tviChild = tvi.ItemContainerGenerator.ContainerFromItem(item);
                        if (tviChild == null)
                            continue;
                        var model = (Model)item;
                        if (data.ID == model.ID)  //使用模型中的一个属性数据进行匹配,该节点是否为选中
                        {
                            ((TreeViewItem)tviChild).IsSelected = true;
                            return;
                        }
                        else
                        {
                            SetSelect((TreeViewItem)tviChild, data);
                        }
                    }
                }
            }
    

    参考:https://www.cnblogs.com/xy2017/p/8901020.html
    https://blog.csdn.net/u013002790/article/details/78210551

    展开全文
  • 具体包括:展开所有节点、收缩所有节点节点选择、动态添加子节点到当前选择节点、动态添加子节点到指定id节点、添加含(不含)图标节点、动态删除当前选择节点、动态删除指定Id节点。 兼容IE6、IE7、FF3.x
  • 求一个vs2010 的 asp.net中treeview与数据库实现动态连接, 前段能够增加删除编辑节点文本, 点击某节点可以获得节点的值传入文本框, 点击某节点可以转到指定页面 希望能给一个完整的...
  • 简介: 1. 常用属性 ExpandAll() 节点全部展开 2. 添加节点 方法一:通过属性窗体添加(略) ...3. 获取、删除指定节点 方法一:通过属性窗体实现 方法二:通过代码实现 代码如下

    简介:

    1. 常用属性

    ExpandAll() 节点全部展开

    2. 添加节点

    方法一:通过属性窗体添加(略)

    方法二:通过代码动态添加

    代码如下:


    3. 获取、删除指定节点

    方法一:通过属性窗体实现

    方法二:通过代码实现

    代码如下

    展开全文
  • Visual C#2005中的TreeView控件的使用

    千次阅读 2009-06-03 10:47:00
    最近在一个项目中遇到处理树状层次关系的数据,于是...读取XML文件中的树状结构数据,并用TreeView控件呈现 在相同层级中前后/上下移动节点 删除指定值的节点TreeView节点存储到XML文件中 开发环境:Windows XP S

    最近在一个项目中遇到处理树状层次关系的数据,于是就暂时使用了TreeView来实现,我把其中的主要功能提了出来做成了一个Demo程序,在这里和大家分享,希望各位多多指教。下面就是实现的主要功能以及源码下载。
    读取XML文件中的树状结构数据,并用TreeView控件呈现
    在相同层级中前后/上下移动节点
    删除指定值的节点
    把TreeView的节点存储到XML文件中

    开发环境:Windows XP SP2, Visual Studio 2005 with SP1
    XML数据的组织结构

    我的XML数据结构如下所示:
    <?xml version="1.0" encoding="utf-8"?>
    <TestTreeView>
        <TestNode nodeText="Test1" nodeValue="a" />
        <TestNode nodeText="Test2" nodeValue="b">
            <TestNode nodeText="Test3" nodeValue="c">
                <TestNode nodeText="Test4" nodeValue="d" />
                <TestNode nodeText="Test5" nodeValue="e" />
            </TestNode>
            <TestNode nodeText="Test6" nodeValue="f" />
        </TestNode>
        <TestNode nodeText="Test7" nodeValue="c" />
    </TestTreeView>


    其中"nodeText"为在TreeView中显示的节点文本,"nodeValue"为该节点实际存储的值,而" a,b,c,d,e,f "为预定义的6个测试值
    用TreeView控件呈现XML数据


    把上述的XML文件的数据呈现到TreeView控件中主要使用了如下的递归处理:

    #region 变量

        private bool enabled = false;
            private string strXmlPath = null;
            private XmlDocument xmlDoc = null;

    #endregion

    #region 方法

        /// <summary>
            /// 根据XML文件加载树节点
        /// </summary>
            /// <param name="xmlPath">要加载的XML文件路径</param>
            private void LoadTreeNodes(string xmlPath)
            {
                this.xmlDoc = new XmlDocument();
                try
                {
                    this.xmlDoc.Load(xmlPath);
                    XmlNodeList nodes = this.xmlDoc.SelectNodes("TestTreeView/TestNode");
                    this.treeMain.BeginUpdate();
                    this.treeMain.Nodes.Clear();
                    this.ConvertXmlNodeToTreeNode(nodes, this.treeMain.Nodes);
                    this.treeMain.EndUpdate();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("程序发生错误:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

           private void ConvertXmlNodeToTreeNode(XmlNodeList xmlNodes, TreeNodeCollection treeNodes)
            {
                foreach (XmlNode xmlNode in xmlNodes)
                {
                    string nodeText = xmlNode.Attributes["nodeText"].Value;
                    string nodeValue = xmlNode.Attributes["nodeValue"].Value;
                    TreeNode newTreeNode = new TreeNode(nodeText);
                    newTreeNode.Tag = nodeValue;
                    if (xmlNode.HasChildNodes)
                    {
                        this.ConvertXmlNodeToTreeNode(xmlNode.ChildNodes, newTreeNode.Nodes);
                    }
                    treeNodes.Add(newTreeNode);
                }
            }

    #endregion
     在相同层级中前后/上下移动节点

    这里的移动节点没有使用常见的定义一个Temp变量来存储临时数据,然后把要移动的2个数据交换位置。以“上移”为例,先把要移动的节点删除,再在该节点的前一个节点的位置插入该节点,在删除前把该节点存储在一个临时变量中,而“下移”则类似,下面是主要的代码:
           // 在同级中上移当前节点
        private void btnMoveUp_Click(object sender, EventArgs e)
            {
                TreeNode current = this.treeMain.SelectedNode;
                TreeNode temp = null;
                if (current != null)
                {
                    temp = current;
                    TreeNode prev = current.PrevNode;

                    if (current.Parent != null)
                    {
                        TreeNode parent = current.Parent;
                        parent.Nodes.Remove(current);
                        parent.Nodes.Insert(prev.Index, temp);
                    }
                    else
                    {
                        this.treeMain.Nodes.Remove(current);
                        this.treeMain.Nodes.Insert(prev.Index, temp);
                    }
                    this.treeMain.SelectedNode = temp;
                }
            }

           // 在同级中下移当前节点
        private void btnMoveDown_Click(object sender, EventArgs e)
            {
                TreeNode current = this.treeMain.SelectedNode;
                if (current != null)
                {
                    TreeNode next = current.NextNode;
                    if (next != null)
                    {
                        TreeNode temp = next;
                        if (current.Parent != null)
                        {
                            TreeNode parent = current.Parent;
                            parent.Nodes.Remove(next);
                            parent.Nodes.Insert(current.Index, temp);
                        }
                        else
                        {
                            this.treeMain.Nodes.Remove(next);
                            this.treeMain.Nodes.Insert(current.Index, temp);
                        }
                        this.treeMain.SelectedNode = temp;
                        this.treeMain.SelectedNode = current;
                    }
                }
            }

     删除指定值的节点

    TreeView节点实际存储的值保存在TreeNode.Tag中,选择要删除的值,然后搜索定位所有节点,最后删除这些节点,重点是遍历所有TreeView的节点搜索具有该值的节点,下面是主要代码:
          // 定位指定值的节点,其中listNodesLocated是一个ListBox控件
       // 列出所有定位到的节点的名称
           private void LocateNodeWithValue(TreeNodeCollection nodes, string nodeValue)
            {
                foreach (TreeNode node in nodes)
                {
                    if (node.Tag.ToString() == nodeValue)
                    {
                        this.listNodesLocated.Items.Add(node.Text);
                    }

                    if (node.Nodes.Count > 0)
                    {
                        this.LocateNodeWithValue(node.Nodes, nodeValue);
                    }
                }
            }

          // 删除上述方法定位到的节点
            private void DeleteNode(TreeNodeCollection nodes, string valueToDelete)
            {
                foreach (TreeNode node in nodes)
                {
                    if (node.Tag.ToString() == valueToDelete)
                    {
                        nodes.Remove(node);
                        this.listNodesLocated.Items.Remove(node.Text);
                    }
                    else if (node.Nodes.Count > 0)
                    {
                        this.DeleteNode(node.Nodes, valueToDelete);
                    }
                }
            }
    保存TreeView的节点到XML文件中

    把编辑后的TreeView中的TreeNode类型的节点转换成XmlNode类型节点保存到XML文件中,该XML文件就是最初选择加载的XML文件,在保存之前要先删除XML中TestTreeView根节点下的所有子节点,主要方法如下:

          // 保存主方法
           private void SaveTreeNodes(string filePath)
            {
                if (this.xmlDoc != null)
                {
                    XmlNode root = this.xmlDoc.SelectSingleNode("TestTreeView");
                  // 删除根节点下的所有原有节点
                    root.RemoveAll();

                    this.ConvertTreeNodesToXmlNodes(this.treeMain.Nodes, root);
                    this.xmlDoc.Save(this.strXmlPath);
                    MessageBox.Show("保存成功!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }

         // 把TreeNode转换成对应的XmlNode
           private void ConvertTreeNodesToXmlNodes(TreeNodeCollection treeNodes, XmlNode xmlNode)
            {
                XmlDocument doc = xmlNode.OwnerDocument;
                foreach (TreeNode treeNode in treeNodes)
                {
                    XmlNode newElement = null;
                    XmlAttribute attrValue = null;

                    newElement = doc.CreateNode(XmlNodeType.Element, "TestNode", "");
                    // Set "nodeText"
                    attrValue = doc.CreateAttribute("nodeText");
                    attrValue.Value = treeNode.Text;
                    newElement.Attributes.Append(attrValue);
                    // Set "nodeValue"
                    attrValue = doc.CreateAttribute("nodeValue");
                    attrValue.Value = treeNode.Tag.ToString();
                    newElement.Attributes.Append(attrValue);
                    xmlNode.AppendChild(newElement);
                    if (treeNode.Nodes.Count > 0)
                    {
                        this.ConvertTreeNodesToXmlNodes(treeNode.Nodes, newElement);
                    }
                }
            }


     这个Demo中的有些方法还有待改善,希望大家多给意见!

    展开全文
  • 3、指定鼠标左键只能拖拽好友节点,并且限制只能拖拽到分组节点上,完成后节点添加到同级节点末尾处,如需更改插入位置请改动事件中的index值; 4、拖拽完成后节点数据的分组属性被更改,为便于看到效果,窗体右侧...
  • Python tkinter-- 第22章 树形列表控件(Treeview)方法

    万次阅读 多人点赞 2019-09-17 09:27:59
    22.2 方法 方法 描述 bbox(item, column=None) 返回指定item的...delete(*items) 删除指定行或者节点(含子节点) detach(*items) 与delete类似,不过不是真正删除,而是隐藏了相关内容。可以用move方法重新显示 exi...
  • Unity插件及使用记录

    2021-04-14 18:21:32
    battleHub TreeView的使用: ...//可以拖/拽切换父节点,也可以多选来切换,选择后,自动滚动,选中单个或多个后按del删除 UITable的使用: 1.右键UI/Table 2.在Table组件中,指定它的collectio...
  • if (treeView1.SelectedNode.Parent == null) //判断是否是父节点 { TreeXML TreXml = new TreeXML(); TreXml.AddXmlSelectedNode(starpath + @"\List.xml", form2.groupName); } } } 这是...
  • 明日科技C#开发入门及项目实战

    热门讨论 2013-04-19 15:47:07
    实例109 将xml文件节点绑定到treeview控件中 实例110 修改treeview控件的节点文本 第11章 c#面向对象高级技术 实例111 利用接口实现选择不同的语言 实例112 使用接口作为方法参数进行编程 实例113 自定义抽象类计算...
  • 实例109 将xml文件节点绑定到treeview控件中 178 实例110 修改treeview控件的节点文本 179 第11章 c#面向对象高级技术 181 实例111 利用接口实现选择不同的语言 182 实例112 使用接口作为方法参数进行编程 184 实例...
  • C#开发经验技巧宝典

    2008-10-14 20:10:07
    0466 如何判断TreeView控件中被勾选的节点 265 0467 用SiteMapPath控件绑定SiteMap文件实现导航 266 0468 如何设置SiteMapPath控件路径分隔符 266 0469 如何设置SiteMapPath控件路径方向 267 0470 如何设置...
  • 实例269 删除指定的选项卡 11.1 菜单应用实例 实例270 为菜单添加快捷键 实例271 设置菜单项是否可用 实例272 将菜单项的字体设置为粗体 实例273 创建级联菜单 实例274 级联菜单的动态合并 实例275 带历史...
  • 实例269 删除指定的选项卡 11.1 菜单应用实例 实例270 为菜单添加快捷键 实例271 设置菜单项是否可用 实例272 将菜单项的字体设置为粗体 实例273 创建级联菜单 实例274 级联菜单的动态合并 实例275 带历史...
  • 实例269 删除指定的选项卡 11.1 菜单应用实例 实例270 为菜单添加快捷键 实例271 设置菜单项是否可用 实例272 将菜单项的字体设置为粗体 实例273 创建级联菜单 实例274 级联菜单的动态合并 实例275 带历史...
  • Delphi开发技巧之-VCL

    2010-02-04 10:25:00
    TTreeview控件显示粗体节点 TWebBrowser中调用“查找”对话框 为Listview栏添加双击事件 为工具栏的TToolButton设置新的索引 仅通过Classname创建和管理任意窗体 从RichEdit取Rtf格式 从TListBox中拖放项目到...
  •  实例020 使用条件运算符判断指定年份是不是闰年 25  实例021 使用流程控制语句报销业务花销 26 2.3 关键字的使用 27  实例022 使用checked关键字处理“溢出”错误 27  实例023 使用typeof关键字获取类的...
  • 实例026 使用as关键字将对象转换为指定类型 32 2.4 流程控制语句的使用 34 实例027 小明去学校和医院分别要走哪条路 34 实例028 利用条件语句判断用户登录身份 35 实例029 判断指定月份属于哪个季节 36 实例030 使用...
  • delphi 开发经验技巧宝典源码

    热门讨论 2010-08-12 16:47:23
    0182 在文本中删除指定的汉字或句子 118 0183 指定符号分割字符串 119 0184 如何使用随机密码和字符串 120 第6章 日期和时间 121 0185 获得系统当前时间 122 0186 获得系统当前日期 122 0187 将日期...
  • 0182 在文本中删除指定的汉字或句子 118 0183 指定符号分割字符串 119 0184 如何使用随机密码和字符串 120 第6章 日期和时间 121 0185 获得系统当前时间 122 0186 获得系统当前日期 122 0187 将日期...
  • 0182 在文本中删除指定的汉字或句子 118 0183 指定符号分割字符串 119 0184 如何使用随机密码和字符串 120 第6章 日期和时间 121 0185 获得系统当前时间 122 0186 获得系统当前日期 122 0187 将日期...
  • 0182 在文本中删除指定的汉字或句子 118 0183 指定符号分割字符串 119 0184 如何使用随机密码和字符串 120 第6章 日期和时间 121 0185 获得系统当前时间 122 0186 获得系统当前日期 122 0187 将日期...
  • 0182 在文本中删除指定的汉字或句子 118 0183 指定符号分割字符串 119 0184 如何使用随机密码和字符串 120 第6章 日期和时间 121 0185 获得系统当前时间 122 0186 获得系统当前日期 122 0187 将日期...
  • 0182 在文本中删除指定的汉字或句子 118 0183 指定符号分割字符串 119 0184 如何使用随机密码和字符串 120 第6章 日期和时间 121 0185 获得系统当前时间 122 0186 获得系统当前日期 122 0187 将日期...
  • 96.如何在TreeView Web控件中动态添加、删除TreeNode节点 100.如何使用TreeView Web控件中的TreeNodeType进行外观控制 101.如何使用TreeView Web控件绑定XML文件-示例1 101.如何使用TreeView Web控件绑定XML文件-...
  • 删除条目131 5.11 ListBox服务器控件132  5.11.1 允许用户选择多项133  5.11.2 使用ListBox控件的例子133  5.11.3 给集合添加条目136 5.12 CheckBox服务器控件136  5.12.1 确定复选框是否被选中138  5.12.2 给...

空空如也

空空如也

1 2 3 4
收藏数 68
精华内容 27
关键字:

treeview删除指定节点