我是在asp.net中使用TreeView的,当点击节点时,就跳转到新的页面中,但是当节点太多的时候,TreeView加载就失败,
我是通过 for循环将节点信息显示出来的,也从网上找过资料,说是延迟加载,但是还是不太会,请各位帮帮忙啊,谢谢了!我的代码如下: private void Bind()
  {
    string rootStr = "标题";
    TreeNode rootNode = new TreeNode(rootStr);
    rootNode.Expanded = true;
    rootNode.Value = "-1";
    rootNode.Target = "bodyFrame";
    //每当点击节点时,都跳转到一个页面当中
    rootNode.NavigateUrl = "body.aspx?treeid=-1";
    //循环的调用函数进行添加子节点
    PopulateTreeViewFromSection("0", rootNode);
    this.TreeView1.Nodes.Add(rootNode);
  }
//向TreeView中添加一级子节点
  private void PopulateTreeViewFromSection(string parentId, TreeNode parentNode)
  {
    DataSet ds = sectionBll.SelectAllSection();
    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
    {
      TreeNode myNode = new TreeNode(ds.Tables[0].Rows[i][1].ToString());
      if (i == 0)
      {
        myNode.Expanded = true;
      }
      myNode.Value = parentId;
      myNode.Target = "bodyFrame";
      //将树的结点编号、小区的结点编号传到body.aspx中
      myNode.NavigateUrl = "body.aspx?treeid=0&xqid="+ds.Tables[0].Rows[i][0].ToString();
      //循环调用函数添加子节点
      PopulateTreeViewFromFloorName("1", myNode,Convert.ToInt32(ds.Tables[0].Rows[i][0].ToString()));
      parentNode.ChildNodes.Add(myNode);
    }
  }
  ...........循环调用函数添加子节点

解决方案 »

  1.   

    把parentNode.ChildNodes.Add(myNode);
    放在PopulateTreeViewFromFloorName("1", myNode,Convert.ToInt32(ds.Tables[0].Rows[i][0].ToString()));
    上边,就是先添加再去递归
      

  2.   

    这样,你看一下CACHE再看一下缓存数据库依赖。就可以搞定了。(你的菜单内容应该是从数据库里读出来的吧!)
      

  3.   

            protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
            {
                TreeNode tn=TreeView1.SelectedNode;
                if (tn.ChildNodes.Count == 0)
                {
                    DataTable dt=到数据刻读取数据;
                    if(dt.Rows.Count>0)
                        tn.ChildNodes.Add(.....)
                }
            }
      

  4.   

    对TreeView中的 节点是从数据库中读出来的。
      

  5.   

    当点击节点的时候,使用了NavigateUrl 跳转到新的页面,那SelectedNodeChanged事件还能触发吗?
      

  6.   

    当点击节点的时候,使用了NavigateUrl 跳转到新的页面,那SelectedNodeChanged事件触发不了啊!