我先生成了所有的节点,再根据用户的权限判断remove指定的节点注意treeview在母版页中!刚登录的时候可以,当再返回的时候就提示“索引超出范围。必须为非负值并小于集合大小。”应该是回来的时候母版页加载时又把这些remove了吧?怎么解决?

解决方案 »

  1.   


    protected void Page_Load(object sender, EventArgs e)
            {            string name = Session["myName"].ToString();
                int a = Convert.ToInt32(Session["myrole"].ToString());
                string s;
                if (a == 1)
                {
                    s = "管理员!";               
                   
                }
                else if (a == 2)
                {
                    s = "报表员!";                TreeNode tn2, tn32, tn4, tn51, tn50;                tn2 = this.TreeView1.Nodes[2];
                    tn32 = this.TreeView1.Nodes[3].ChildNodes[2];
                    tn4 = this.TreeView1.Nodes[4];
                    tn51 = this.TreeView1.Nodes[5].ChildNodes[1];
                    tn50 = this.TreeView1.Nodes[5].ChildNodes[0];
                    this.TreeView1.Nodes[3].ChildNodes.Remove(tn32);
                    this.TreeView1.Nodes[5].ChildNodes.Remove(tn51);
                    this.TreeView1.Nodes[5].ChildNodes.Remove(tn50);
                    this.TreeView1.Nodes.Remove(tn2);
                    this.TreeView1.Nodes.Remove(tn4);
                    
                }
                else
                {
                    s = "普通用户!";                
                }
                this.Label1.Text = "您好!" + name;
                this.Label2.Text = " 您的权限:" + s;
               
            }
      

  2.   

    在你代码的一开始先将所有的节点都加上再判断Session的值,然后再删除节点
      

  3.   

    或者判断Session的值以后动态添加所需的节点
      

  4.   

    现在不就是节点先是都有,再判断Session然后删除吗?
    如何动态添加???谢谢请给出代码
      

  5.   

    注意treeview在母版页中注意你的treeview不能放在一个 holder里面!!检查selectnodebound时候,是不是有执行TreeView1.databind();
      

  6.   

    那你原来是怎么添加的节点?直接在IDE添加的?
      

  7.   


    我并没有selectnodebound啊!应该在哪执行呢?