惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
S
Securelist
MyScale Blog
MyScale Blog
Jina AI
Jina AI
罗磊的独立博客
The Cloudflare Blog
美团技术团队
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
博客园 - 三生石上(FineUI控件)
月光博客
月光博客
雷峰网
雷峰网
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
博客园 - Franky
博客园 - 聂微东
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MongoDB | Blog
MongoDB | Blog
T
Tailwind CSS Blog
Attack and Defense Labs
Attack and Defense Labs
博客园_首页
Latest news
Latest news
Apple Machine Learning Research
Apple Machine Learning Research
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Hacker News
The Hacker News
G
GRAHAM CLULEY
Simon Willison's Weblog
Simon Willison's Weblog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
U
Unit 42
D
Docker
Webroot Blog
Webroot Blog
N
Netflix TechBlog - Medium
T
Tor Project blog
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LINUX DO - 最新话题
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
B
Blog
Recent Announcements
Recent Announcements
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
Security Latest
Security Latest
V2EX - 技术
V2EX - 技术
N
News | PayPal Newsroom
Microsoft Security Blog
Microsoft Security Blog

博客园 - Machine Lee

js动态更换img的src问题 两台服务器上SQL Server数据库数据互操作示例 JQuery应用集合 SVN自动更新测试服务器工作副本(C#写winform程序实现) 学习《SQL Server 2005管理员大全》时遇到的困难 ASP.NET根据URL生成网页缩略图示例程序(C#语言) 传参防SQL注入函数 web.config中sessionState节点的配置方案 SQL中DateTime转换成Varchar样式 ASP错误信息提示函数 - Machine Lee - 博客园 ASP操作Excel技术总结[转载收藏] js控制文本框只能输入整数或浮点数 正则表达式验证可发短信的号码,如手机号和小灵通号码(106+区号+号码) SQL中实现Split的功能函数 GridView中CheckBox客户端全选 验证多行文本框输入长度的正则表达式 javascript写的日历控件(收藏) javascript获取TreeView控件选中节点的Text和Value TreeView绑定XML数据源C#代码示例
TreeView动态构造多级树并实现拖动(收藏)
Machine Lee · 2009-05-25 · via 博客园 - Machine Lee

        private static DataSet objSet = new DataSet();

        //动态构造树-这里支持5级
        public static void SetTrees(TreeView node)
        {
            objSet = Data.GetUnite.GetUnites();
            if (objSet != null)
            {
                if (objSet.Tables[0].Rows.Count != 0)
                {
                    //1级
                    for (int i = 0; i < objSet.Tables[0].Rows.Count; i++)
                    {
                        node.Nodes.Add(objSet.Tables[0].Rows[i][1].ToString());
                    }
                    //2级
                    for (int i = 0; i < node.Nodes.Count; i++)
                    {
                        string nodeDir = gettree(node.Nodes[i]);
                        objSet.Clear();
                        objSet = Data.GetUnite.GetUnites1(nodeDir);

                        for (int j = 0; j < objSet.Tables[0].Rows.Count; j++)
                        {
                            node.Nodes[i].Nodes.Add(objSet.Tables[0].Rows[j][1].ToString());
                        }
                        node.Nodes[i].Expand();
                    }
                    //3级
                    for (int i = 0; i < node.Nodes.Count; i++)
                    {
                        for (int k = 0; k < node.Nodes[i].Nodes.Count; k++)
                        {
                            string nodeDir2 = gettree(node.Nodes[i].Nodes[k]);
                            objSet.Clear();
                            objSet = Data.GetUnite.GetUnites1(nodeDir2);
                            for (int j = 0; j < objSet.Tables[0].Rows.Count; j++)
                            {
                                node.Nodes[i].Nodes[k].Nodes.Add(objSet.Tables[0].Rows[j][1].ToString());
                                node.Nodes[i].Nodes[k].Expand();
                            }
                        }
                    }
                    //4级
                    for (int i = 0; i < node.Nodes.Count; i++)
                    {
                        for (int k = 0; k < node.Nodes[i].Nodes.Count; k++)
                        {
                            for (int g = 0; g < node.Nodes[i].Nodes[k].Nodes.Count; g++)
                            {
                                string nodeDir2 = gettree(node.Nodes[i].Nodes[k].Nodes[g]);
                                objSet.Clear();
                                objSet = Data.GetUnite.GetUnites1(nodeDir2);
                                for (int j = 0; j < objSet.Tables[0].Rows.Count; j++)
                                {
                                    node.Nodes[i].Nodes[k].Nodes[g].Nodes.Add(objSet.Tables[0].Rows[j][1].ToString());
                                    node.Nodes[i].Nodes[k].Nodes[g].Expand();
                                }
                            }
                        }
                    }
                    //5级
                    for (int i = 0; i < node.Nodes.Count; i++)
                    {
                        for (int k = 0; k < node.Nodes[i].Nodes.Count; k++)
                        {
                            for (int g = 0; g < node.Nodes[i].Nodes[k].Nodes.Count; g++)
                            {
                                for (int h = 0; h < node.Nodes[i].Nodes[k].Nodes[g].Nodes.Count; h++)
                                {
                                    string nodeDir2 = gettree(node.Nodes[i].Nodes[k].Nodes[g].Nodes[h]);
                                    objSet.Clear();
                                    objSet = Data.GetUnite.GetUnites1(nodeDir2);
                                    for (int j = 0; j < objSet.Tables[0].Rows.Count; j++)
                                    {
                                        node.Nodes[i].Nodes[k].Nodes[g].Nodes[h].Nodes.Add(objSet.Tables[0].Rows[j][1].ToString());
                                        node.Nodes[i].Nodes[k].Nodes[g].Nodes[h].Expand();
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        //利用递归取得节点的路径
        private static string gettree(TreeNode nood)
        {
            if (nood.Parent == null)
            {
                return nood.Text;
            }
            return Path.Combine(gettree(nood.Parent), nood.Text);
        }

         //树节点拖动操作
        public static void TreeDrop(TreeView treeView3, DragEventArgs e)
        {
            TreeNode newNode;

            if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false))
            {

                Point pt;

                TreeNode destinationNode;

                pt = treeView3.PointToClient(new Point(e.X, e.Y));

                destinationNode = treeView3.GetNodeAt(pt);

                newNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");
                //最上级不能拖动到下级或者同级
                if (newNode.Parent == null || newNode.Parent.Parent == null )
                {
                    //集团总部\第二研究院\1所\安全保卫处\sss
                }
                else
                {
                    string[] FullPath = destinationNode.FullPath.ToString().Split(new string[1] { "\\" }, StringSplitOptions.None);
                   //超过最大级限不能拖动添加
                    if (!destinationNode.Equals(newNode)&& FullPath.Length<5)
                    {

                        //destinationNode.Nodes.Add(newNode.Clone());

                        destinationNode.Nodes.Add((TreeNode)newNode.Clone());


                        destinationNode.Expand();

                        //Remove original node

                        newNode.Remove();

                    }

                    string nodeDIR = gettree(destinationNode);
                    //MessageBox.Show(nodeDIR + "\\" + newNode.Text.ToString());
                    Data.GetUnite.UpdataPernt(newNode.Text.ToString().Trim(), nodeDIR);
                }
            }
        }