我是用的母板页放的treeivew,从数据库读取出来节点名!现在我在父节点下,动态添加一个子节点!比如父节点叫做
“系统桌面”,我想在父节点下添加一个子节点叫做“文件传送”(这里是客户端来添加,所以客户端添加的子节点是无法预知的),此时子节点下的链接地址在客户端怎么确定呢?我知道有一个trNode.NavigateUrl = sTreeUrl;属性
在这里的链接地址如果确定呢?

解决方案 »

  1.   

    就是说你现在只有一层结构?
    你的数据库就只是存节点信息?
    把你的treeview代码贴出来看看吧
      

  2.   

    treeview的 DataSource  绑定 数据啊
      

  3.   

     /// <summary>
        /// 给当前节点添加子节点
        /// </summary>
        /// <param name="node">当前节点</param>
        /// <param name="pid">当前节点的ID</param>
        protected void AddPages(TreeNode node, string pid)
        {
            DataSet ds = lm.GetPage(pid);
            if (ds != null && ds.Tables.Count > 0)
            {
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    TreeNode childnode = new TreeNode();
                    childnode.Text = dr["BigPageName"].ToString();
                    childnode.NavigateUrl = "bbsSolution.aspx?PageId=" + dr["PageId"].ToString();
                    childnode.Target = "mainFrame";
                    //给当前节点添加子节点
                    AddPages(childnode, dr["PageId"].ToString());
                    if (node == null)
                    {
                        TreeView1.Nodes.Add(childnode);
                    }
                    else
                    {
                        node.ChildNodes.Add(childnode);
                    }
                }        }
        }
      

  4.   


      private void Bind()
            {
                tvNode.Nodes.Clear();
                IList<Treelist> treelist = bTree.getSystemNodelist();//所有父节点
                foreach (Treelist tlist in treelist)
                {
                    string nodeId = tlist.TreeId.ToString();//第一层节点id
                    string nodeName = tlist.TreeName;//第一层节点名称
                    TreeNode fatherNode = this.CreatTreeNode(nodeName, nodeId, "", "image/CloseTree.gif");//根据节点信息,创建第一层节点
                    CreateChildTree(nodeId, fatherNode);//创建子节点
                    tvNode.Nodes.Add(fatherNode);//将第一层节点加入到TreeView中
                }
            }
            /// <summary>
            /// 创建一个树节点,返回一个树节点对象,参数内容是:
            /// 节点名称,节点ID,链接地址,正常图标,展开后的图标
            /// </summary>
            private TreeNode CreatTreeNode(string sTreeName, string sTreeid, string sTreeUrl, string sTreeImg)
            {
                TreeNode trNode = new TreeNode();
                trNode.Text = sTreeName;
                trNode.Value = sTreeid;
                trNode.NavigateUrl = sTreeUrl;
                trNode.ImageUrl = sTreeImg;
                return trNode;
            }
            /// <summary>
            /// 创建第二层节点
            /// </summary>
            /// <param name="nodeId"></param>
            /// <param name="fatherNode"></param>
            private void CreateChildTree(string nodeId, TreeNode fatherNode)
            {
                IList<Treelist> childTree = bTree.getTreeParentIdList(int.Parse(nodeId));//得到所有父节点下的子节点
                foreach (Treelist trList in childTree)
                {
                    string ChildNodeId = trList.TreeId.ToString();//第二层节点id
                    string ChildNodeName = trList.TreeName;//第二层节点名称
                    string NodeUrl = ResolveUrl(trList.TreeUrl.Trim());//将路径转换为在客户端可用的URL
                    TreeNode childNode = this.CreatTreeNode(ChildNodeName, ChildNodeId, NodeUrl, "image/CloseTree.gif");
                    fatherNode.ChildNodes.Add(childNode);
                }
            }现在我只用了两层,所有节点(子节点和父节点)都是放在一个表,表中有一个链接地址字段