怎么用gridview实现树形啊 连接数据库那种可以多子节点的那种
gridview的主键和头2列是通过3表关联的查询sql语句获取,在页面加载时先获取为parentId为null的gridview 当点击莫行头列后根据主键id获取子节点,方法一样的只是parentid=当前行主键id,但我用viewstate保存的只能显示父节点有关的主键id,子节点主键id为空 怎么解决呢?

解决方案 »

  1.   

    楼住的,用DataList实现的要不?
      

  2.   

     <asp:TreeView ID="TreeView1" runat="server" ShowLines="True">
        <Nodes>
           <asp:TreeNode Text="a" Value="a">
            <asp:TreeNode Text="a1" NavigateUrl="~/Member/EditPwd.aspx" Value="a1" Target="right"></asp:TreeNode>
              <asp:TreeNode Text="a2" NavigateUrl="~/Member/Person.aspx" Value="a2" Target="right"></asp:TreeNode>
              <asp:TreeNode Text="a3" NavigateUrl="~/Member/Inte.aspx" Value="a3" Target="right"></asp:TreeNode>
               </asp:TreeNode>
                </Nodes>
            </asp:TreeView>后台代码: private void databind()
        {
            //获取根节点数据
            DataTable dt = GetSorts("");
            //循环添加根节点数据
            foreach (DataRow dr in dt.Rows)
            {
                //实例化根节点
                TreeNode node = new TreeNode();
                node.Text = dr["sortname"].ToString();
                node.Target = "right";
                node.NavigateUrl = "Sorts.aspx?sortid=" + dr["sortid"].ToString();
                //查找该节点下所有子节点
                DataTable dt1 = GetSorts(dr["sortid"].ToString());            //进入循环添加子节点的过程
                AddChild(dt1,node);            //将根节点添加进树控件中
                TreeView1.Nodes.Add(node);
            }
        }
        /// <summary>
        /// 将该节点下所有子节点都添加进去
        /// </summary>
        /// <param name="dt1"></param>
        /// <param name="node"></param>
        private void AddChild(DataTable dt1,TreeNode node)
        {
            foreach (DataRow dr1 in dt1.Rows)
            {
                TreeNode node1 = new TreeNode();
                node1.Text = dr1["sortname"].ToString();
                node1.Target = "right";
                node1.NavigateUrl = "Sorts.aspx?sortid=" + dr1["sortid"].ToString();
                //获取当前节点的子节点
                DataTable dt = GetSorts(dr1["sortid"].ToString());
                //
                AddChild(dt, node1);
                node.ChildNodes.Add(node1);
            }
        }