这标题这内容~~这是在考阅读理解啊~~~这涉及到查出来的数据怎么认为是一级节点,怎么算是2级节点。
有像#1楼说的,每条数据加个Level表示级别,或者是通过ID-parentID这种映射方式来表示级别,或者楼主的数据本身自定了什么数据结构~~不说明白回答个蛋蛋,就算这个问题很简单...

解决方案 »

  1.   

    连接Sql server数据库绑定到TreeView根节点和一级节点
    //递归填充根节点
    protected void Page_Load(object sender, EventArgs e)
        {        if (!IsPostBack)
            {
                //获取数据连接语句,并创建数据库连接对象
                myConn = DBClass.GetConnection();
                CreateDataSet();
                InitTree(TreeView1.Nodes, "0");
            }
        }
    //将数据库数据填充从根节点调用显示子树
         public void InitTree(TreeNodeCollection Nds, string parentId)
        {
            TreeNode NewNode;
            //data为存储建树数据信息的数据集
            //用父节点进行筛选数据集中信息
            DataRow[] rows = data.Tables[0].Select("parent_Id='" + parentId + "'");
            foreach (DataRow row in rows)
            {            NewNode = new
                    TreeNode(row["title"].ToString(),                            //设置父节点
                    row["Files_Id"].ToString(), "images/1.gif", row["NavigateUrl"].ToString(), "");
                Nds.Add(NewNode);
              
                InitTree(NewNode.ChildNodes, row["Files_Id"].ToString());//添加子节点
            }
        }//codego.net/tags/11/1/
    //从数据库中获取某个节点关联地址
    //利用存储过程从数据库中获取TreeView中某个节点的关联地址
    public static GetUrl(int filesID)
    {
      SqlConnection myConnection = GetConnection();
      SqlCommand myCommand = new SqlCommand("GetUrl",myConnection);
    myCommand.CommandType=ConnandType.StoredProcedure;
    //添加参数
    SqlParameter FilsesId = new SqlParameter("@FilesId" , SqlDbType.Int,4);
    FilsesId.Value = filesId;
    myCommand.Parameters.Add(FilsesId);
    //添加参数
    SqlParameter Url = new SqlParameter("@Url", SqlDbType.NVarChar,100);
    Url.Direction = ParameterDirection.Output;
    myConnection.Open();
    myCommand.ExecuteNonQuery();
    string url Url.Value.ToString();
    myCommand.Dispose();
    myConnection.Dispose();
    return url;
    }
      

  2.   

    同意3楼的
    主要是要展开treeNode节点
    给一层一层的节点赋值