C# 递归TreeView 与根据选择的节点获得整个节点路径

本文介绍了一个ASP.NET应用程序中树形控件的加载过程及选中节点变化时的操作方法。通过`loadtree`方法清空并重新加载树节点,使用递归方法`InitTree`构建树结构,并在节点变化时更新选中节点的值及其路径。

 private void loadtree()
        {
            GTree.Nodes.Clear();
            ds = workdo.GetDataSet();
            InitTree(GTree.Nodes, "0");
        }
        private void InitTree(TreeNodeCollection Nds, string parentid)
        {
            DataView dv = new DataView();
            TreeNode tmpNd = null;
            dv.Table = ds.Tables[0];
            dv.RowFilter = String.Format("ParentID='{0}'", parentid);
            foreach (DataRowView drv in dv)
            {
                tmpNd = new TreeNode();
                tmpNd.Text = (string)drv["WorkName"];//节点名称
                tmpNd.Value = (string)drv["ID"];
                //tmpNd.NavigateUrl = String.Format("?id={0}", drv["ID"]);//节点URL
                //tmpNd.ImageUrl = ""; //节点图片
                if (parentid == "0")
                    tmpNd.Expanded = true;
                else
                    tmpNd.Expanded = false;
                Nds.Add(tmpNd);
                InitTree(Nds[Nds.Count - 1].ChildNodes, drv["ID"].ToString());
            }
        }

 

        /// <summary>
        /// 節點變化時候,頁面顯示操作
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public event EventHandler SelectedNodeChanged;
        protected void GTree_SelectedNodeChanged(object sender, EventArgs e)
        {
            this.NodeID = GTree.SelectedNode.Value;
            //          = Tree1.SelectedNode.ValuePath;//value完整路径

            string str = "";

            TreeNode parentNode = GTree.SelectedNode.Parent;
            while (parentNode != null)
            {
                str = "/" + parentNode.Text + str;
                parentNode = parentNode.Parent;
            }
            this.NodeName = (str + "/" + GTree.SelectedNode.Text).Substring(1);  //Text完整路径名


            txtContent_TextTree.Value = this.NodeName;
            if (SelectedNodeChanged != null)
                SelectedNodeChanged(sender, e);

        }


       

转载于:https://www.cnblogs.com/Jack_G/archive/2011/08/31/2160939.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值