我想弄一个无限添加子节点的数控件、对应的记录动态插入数据库中、如果我删除根节点、要求其下面的子节点全部也删除 同样数据库的记录也删除?说简单点就是动态添加、节点、删除节点(删除单个子节点、删除根节点)、同时数据库也响应同样操作(删除、添加)?

解决方案 »

  1.   

    参考:
    //递归添加树的节点
        public void AddTree(string ParentID, TreeNode pNode)
        {
            DataSet ds = (DataSet)this.ViewState["ds"];        DataView dvTree = new DataView(ds.Tables[0]);        //过滤ParentID,得到当前的所有子节点
             dvTree.RowFilter = "[PARENTID] = " + ParentID;
            DataView dvPower=new DataView();
            if (getuserpower() != null)
                dvPower = new DataView(getuserpower(), "", "PowerId", DataViewRowState.CurrentRows);
            else
                dvPower = null;        foreach (DataRowView Row in dvTree)
            {
                TreeNode Node = new TreeNode();
                if (pNode == null)
                {    //添加根节点
                    Node.Text = Row["NODENAME"].ToString();
                    Node.Value = Row["NODEID"].ToString();
                    //Node.NavigateUrl = Row["linkUrL"].ToString();
                    //Node.ToolTip = Row["ADDRESS"].ToString();
                    TreeView1.Nodes.Add(Node);
                    Node.Expanded = true;
                    AddTree(Row["NODEID"].ToString(), Node);        //再次递归
                }
                else
                {   //̀添加当前节点的子节点
                    Node.Text = Row["NODENAME"].ToString();
                  Node.Value = Row["NODEID"].ToString();
                    
                   
                    pNode.ChildNodes.Add(Node);
                    Node.Expanded = true;
                    AddTree(Row["NODEID"].ToString(), Node);     //再次递归
                }        }
        }调用: AddTree("0", (TreeNode)null);
    表设计:
    CREATE TABLE [dbo].[Tree] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [ParentId] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [NodeID] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [NodeName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,