我用树来做配置,节点全部存入数据库库中,当我添加一个节点后,会重新从数据库读取树,我想要实现读取完成后树的状态和之前的状态只是相差新增的节点,其他的都一样,如何实现?目前已经实现的是要么全部展开,要么就全部关闭,比较郁闷,貌似默认的就是全部关闭,请教各位高人指点一下。昨天也百度和Google了一天了,也没搞定,才来此地求助,希望大家能提供下指点,感激不尽

解决方案 »

  1.   

    用一个东西比如隐藏的控件来记录一下。当然也可以用别的比如cookie。用这些记录了以后,比如我的一个节点是打开的,那么同时也要展开这个点的所有的父节点。
      

  2.   

    TreeView本来就是自己记录状态的,反倒是你“当我添加一个节点后,会重新从数据库读取树”是个典型的画蛇添足的设计。添加一个节点,你为什么要重新形成整个树节点?这不但速度慢,而且极端多余。
      

  3.   

    或者你也可以这样添加节点:
    TreeNode node=new TreeNode();
    node.value=
    node.text=
    this.treeview1.Nodes.Add(node);然后把这个数据插入数据库page_load
    {
        if(!IsPostBack)
    {
        BindTree();
    }
    }这样的话就不要用其他的东西来保存树的状态了
      

  4.   

    其实它自带的这个TreeView控件本身就有很恶心的刷新,我现在只是想,在新增一个节点后,刷新完了,树还能够保持之前的状态,可以接着往下配置
      

  5.   

    你首先要知道当前选中的树节点,填加完成后treeview 有一个选中的方法你找一下(如果我没有记错的话)选中它就行了,我当时好像就是这么实现的