zoukankan      html  css  js  c++  java
  • Winfrom TreeView 绑定数据

    在Winform。。TreeView绑定数据
    RoleManager tManager = new RoleManager();
                DataTable dt = tManager.FindRoleRigthByRoleid(listRoleView.SelectedItems[0].Text);
                TreeViewBinding(dt, liv_alreadyRole);

    绑定数据方法:

     
     private void TreeViewBinding(DataTable dt, TreeView tv)
            {
                tv.Nodes.Clear();
                foreach (DataRow item_p in dt.Rows)
                {
                    if (item_p["ParentNode"].ToString() == "00")
                    {
                        TreeNode nodep = new TreeNode(item_p["NodeName"].ToString());
                        nodep.Tag = item_p;
                        tv.Nodes.Add(nodep);
                        foreach (DataRow item_child in dt.Rows)
                        {
                            if (item_child["ParentNode1"].ToString() == item_p["Nodeid"].ToString())
                            {
                                TreeNode cnode = new TreeNode(item_child["NodeName"].ToString());
                                cnode.Tag = item_child;
                                nodep.Nodes.Add(cnode);
                            }
                        }
                    }
                }
            }
    
     

    父节点:选中的时候 选中当前所有的子节点:

    设置当前TreeViw AfterCheck的事件:

     //event
       void ListFullRoleAfterCheck(object sender, TreeViewEventArgs e)
            {
               
                    if (e.Action == TreeViewAction.ByMouse)
                    {
                        if (e.Node.Checked)
                        {
                            //取消节点选中状态之后,取消所有父节点的选中状态
                            SetChildNode(e.Node, true);
                            if (e.Node.Parent != null)
                            {
                                SetParentNode(e.Node, true);
                            }
                        }
                        else
                        {
                            //取消节点选中状态之后,取消所有父节点的选中状态
                            SetChildNode(e.Node, false);
                            //如果节点存在父节点,取消父节点的选中状态
                            if (e.Node.Parent != null)
                            {
                                SetParentNode(e.Node, false);
                            }
                        }
                    }
          
            }
     
       private void SetParentNode(TreeNode node, bool state)
            {
                TreeNode nodes = node.Parent;
                nodes.Checked = state;
                if (node.Parent.Parent != null)
                {
                    SetParentNode(node, state);
                }
            }
    
        private void SetChildNode(TreeNode node, bool state)
            {
                TreeNodeCollection nodes = node.Nodes;
                if (nodes.Count > 0)
                {
                    foreach (TreeNode cloneable in nodes)
                    {
                        cloneable.Checked = state;
                        SetChildNode(cloneable, state);
                    }
                }
            }
    
     
  • 相关阅读:
    Socket 编程(二)
    【ASP.NET】:Ckeditor+Fckeditor的使用
    Socket编程(一):建立与客户端的连接并接受数据
    Linux基础系列:常用命令(3)
    linux 命令汇总
    Linux基础系列:常用命令(2)
    Linux基础系列:常用命令(1)
    计算机基础系列三:网络基础
    计算机基础系列二:计算机操作系统
    计算机基础系列一:计算机硬件
  • 原文地址:https://www.cnblogs.com/w2011/p/2771865.html
Copyright © 2011-2022 走看看