DataSet ds = new DataSet();
    protected void Page_Load(object sender, EventArgs e)
    {        if (!IsPostBack)
        {   
            CreatTree();
            if (Request.QueryString["id"] == null)
            {
                TextBox2.Text = "";
            }
            else
            {
                TextBox2.Text = Request.QueryString["id"].ToString();
                GG();
            }
        }
    }
    public void CreatTree()  ///创建树
    {
        BLLQuery bq = new BLLQuery();
        ds = bq.GetDataSet("select comp_id,comp_name,layer_code,link_target,parent_lay,convert(int,left(layer_code ,3)) as id from  ComponentHave order by id asc");
        AddTree("0", (TreeNode)null, "Sys_Hierarchy.aspx?id=");
    }
    public void AddTree(string ParentID, TreeNode pNode, string urls)
    {
        DataView dvTree = new DataView(ds.Tables[0]);
        //过滤ParentID,得到当前的所有子节点
        dvTree.RowFilter = "[parent_lay] = '" + ParentID+"'";
        foreach (DataRowView Row in dvTree)
        {
            TreeNode Node = new TreeNode();
            if (pNode == null)
            {    //添加根节点
                Node.Text = Row["comp_name"].ToString();
                Node.NavigateUrl = urls + Row["layer_code"].ToString();
                this.TreeView1.Nodes.Add(Node);
                //Node.Expanded = true;
                AddTree(Row["layer_code"].ToString(), Node, urls); //再次递归
            }
            else
            {  //添加当前节点的子节点
                Node.Text = Row["comp_name"].ToString();
                Node.NavigateUrl = urls + Row["layer_code"].ToString();
                pNode.ChildNodes.Add(Node);
                //Node.Expanded = true;
                AddTree(Row["layer_code"].ToString(), Node, urls); //再次递归
            }
        }
    }    private void GG()  //获取每个节点的下层节点在GRIDVIEW上显示
    {
        DataSet ds = new DataSet();
        string Ps = Request.QueryString["id"].ToString();
        int li = Ps.Length + 3;
        string parm = Ps + "%";
        String[] pString = new String[] { li.ToString(), parm };
        ds = BySqlHelperQuery.GetTreeViewLay(pString, 60);
        GridView1.DataSource = ds.Tables[0];
        GridView1.DataBind();
    }每次一点节点时候 页面就刷新一次,树又建立了一次
怎么让点击后不刷新-----------------------
还有谁有直接一点的树上的
复选框联动程序---javascript 写的 
能发我一个不 

解决方案 »

  1.   

    放在updatepanel中不就可以不刷新了吗?
      

  2.   

    你是不是在TreeView_SelectedNodeChanged事件中又CreatTree()了?
      

  3.   

    我也碰到过这样的问题。就是CreateTree()运行了多次。在AddTree()里面先将树的节点都清除,应该就可以了。如果不想这样,再仔细看看,让CreateTree()只运行一次。
      

  4.   


       public void CreatTree()  ///创建树
        {
            BLLQuery bq = new BLLQuery();
            ds = bq.GetDataSet("select comp_id,comp_name,layer_code,link_target,parent_lay,convert(int,left(layer_code ,3)) as id from  ComponentHave order by id asc");
            AddTree("0", (TreeNode)null, "Sys_Hierarchy.aspx?id=");
        }
    这一段传入了  红色字体部分所以多次刷新了
    如果只传入"#" 时候则不刷新了但是我怎么判断我当前选中的节点并,并且取出节点值   谢谢高手们
      

  5.   

    TreeView有一个SelectedNodeChanged()事件  有一个SelectedNode属性可以用
      

  6.   

    你是要提高效率吧,我是怎么想的
    书刷新了一定要重新建立的
    发到updatepanel里也建立知识感觉不到
    你的数不是CreatTree这个方法吗
    你这样,你这个树一定是相对绝对的吧
    你吧CreatTree这个方法用一个Cache吧他存起来
    然后进行判断
    if(Cache["CreatTree"]==null)
    如果他是空就从新执行CreatTree
    else
    就直接从Cache中获得你要的值
    ds=(dataset)Cache["CreatTree"]
    这要就能提高效率了哦