希望能给个例子来,谢谢
目前我的表是这样的
id pid name

解决方案 »

  1.   


    http://www.51aspx.com/CV/JsSqlTreehttp://www.51aspx.com/CV/AjaxNodeTree
      

  2.   

    两个都不好,我要Treeview的呀,怎么样用js的
      

  3.   

    动态树?就是你的名称和URL都是库里拿出来的吧?
    好做啊,给你个TreeView的    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.BuildTree();
            }
        }    /// <summary>
        /// 构造树控件
        /// </summary>
        private void BuildTree()
        {
            DataSet ds = this.FillTable();
            foreach (DataRow dr in ds.Tables["plate"].Rows)
            {
                TreeNode master = new TreeNode();
                master.Text = dr[1].ToString();
                master.Value = dr[0].ToString();
                master.Target = "middleFrame";
                this.TreeView1.Nodes.Add(master);
                foreach (DataRow dr1 in dr.GetChildRows("okok"))
                {
                    TreeNode child = new TreeNode();
                    child.Text = dr1[2].ToString();
                    child.Value = dr1[0].ToString();
                    child.Target = "middleFrame";
                    child.NavigateUrl = "ShowFromPlate.aspx?FromPlateID=" + dr1[0].ToString();
                    master.ChildNodes.Add(child);                DataSet Cardds = this.BuildCard(Convert.ToInt32(dr1[0].ToString()));
                    for (int i = 0; i < Cardds.Tables[0].Rows.Count; i++)
                    {
                        TreeNode card = new TreeNode();
                        card.Text = Cardds.Tables[0].Rows[i][2].ToString();
                        card.Value = Cardds.Tables[0].Rows[i][0].ToString();
                        card.Target = "middleFrame";
                        card.NavigateUrl = "ShowCard.aspx?ID=" + Cardds.Tables[0].Rows[i][0].ToString();
                        child.ChildNodes.Add(card);
                    }
                }
            }
        }    /// <summary>
        /// 填充到DataSet
        /// </summary>
        /// <returns></returns>
        private DataSet FillTable()
        {
            DataSet ds = new DataSet();
            SqlConnection conn = new SqlConnection( ConfigurationManager.AppSettings["CONSTR"]);
            SqlCommand plate = new SqlCommand("select * from Plate",conn);
            SqlCommand fromPlate = new SqlCommand("select * from FromPlate", conn);
            SqlDataAdapter da = new SqlDataAdapter(plate);
            SqlDataAdapter da1 = new SqlDataAdapter(fromPlate);
            da.Fill(ds,"plate");
            da1.Fill(ds,"fromPlate");
            ds.Relations.Add(new DataRelation("okok",ds.Tables["plate"].Columns["ID"],ds.Tables["fromPlate"].Columns["FromID"]));
            return ds;
        }    /// <summary>
        /// 构造第三级
        /// </summary>
        /// <param name="FromPlateID"></param>
        /// <returns></returns>
        private DataSet BuildCard(int FromPlateID)
        {
            return SqlHelper.ExecuteDataSet("select * from Card where FromPlateID = " + FromPlateID + "", "Card", CommandType.Text, null);
        }
      

  4.   

    对应数据表总表
    ID  NAME
    从表
    ID(主键) FromID(所属总表) NAME
    第三级表
    ID(主键) FromID(所属从表) NAMELZ可以根据这样的结构改下表
    还有,就是上面的代码,有的是我自己的类库,换成你自己的就行了