登陆 | 免费注册(只需一分钟) | 会员中心

聚宝网   购物专题 基金专题 性专题 饮食专题 教育专题 生活大参考 园林资讯 园艺库 健康专题
  论文专题 家庭养花 园林景观 盆景奇石 激情图库 农业资料库 园林古建 英文站 花卉栽培

聚宝网免费为您提供 最新IT资讯

 

首页 > FAQ > asp.net
如何用程序控制TreeView2.0的展开与折叠??
时间:2007-06-18  www.jubao163.com  来源: 不详
所属分类:.NET技术 ASP.NET
-----------------------------------------

我可以通过程序找到某个节点。
如果这个节点是父结点,那么这个节点直接展开,如果找到的是叶节点,那么把该叶节点的父节点展开。

疑问。如果展开某个节点的话,那么该节点的各级父节点是不是都要显示的展开?

多谢!

----------------------------------------------------------------------

UP

--------------------------------------------------------

谢谢,会的帮个忙吧!!

--------------------------------------------------------

up

--------------------------------------------------------

protected void TreeView1_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
    {
        
        TreeNodeCollection ts = null;

        if (e.Node.Parent == null)
        {
            ts = ((TreeView)sender).Nodes;
        }
        else
            ts = e.Node.Parent.ChildNodes;


        foreach (TreeNode node in ts)
        {
            if (node != e.Node)
            {
                node.Collapse();
            }
        }
    }


--------------------------------------------------------

private void Expanded(TreeNode pnode)
    {
        if (pnode.ChildNodes.Count > 0)
        {
            pnode.SelectAction = TreeNodeSelectAction.None;
            foreach (TreeNode node in pnode.ChildNodes)
            {
                Expanded(node);
            }
        }
    }

在Page_Load这样调用:

if(!IsPostBack)
{
    foreach(TreeNode node in this.TreeViewControl.Nodes)
    {
         Expanded(node);
    }
}
//TreeViewControl是你页面上的treeview

--------------------------------------------------------

上面写错一行

把TreeNodeSelectAction.None 换成 TreeNodeSelectAction.Expand

--------------------------------------------------------

谢谢 criedshy(哭泣的天空)
你所给出的程序是遍历Treeview的所有节点,然后将节点的SelectAction 属性赋值,
这个属性赋值对节点的展开其什么作用?
据我所知,设置pnode.SelectAction = TreeNodeSelectAction.Expand;
的作用是,用户点击文字也可以展开节点。
我运行了你上面的程序,TreeView依旧是全部折叠的,而并没有展开我找到的节点。

谢谢balenoww(名花虽有主,锄头更无情,只要锄头挥得好,哪有墙角挖不) 
你所给出的代码是在节点展开事件中触发事件。而我希望得到的效果是,我知道TreeView中某个节点的Value,我希望通过遍历TreeView,找到=Value的这个节点,然后将其或将其父节点展开。


-----------------------
我希望的效果是,我不去触发TreeView的任何事件,我通过一个独立的按钮事件,去TreeView 中找到给定的一个Value的node,然后将其展开,也就是说,我前面可能编辑了TreeView,我要再次重新邦定TreeView ,然后才能看到刚才更新的效果。在重新邦定后,我希望节点还定位到我刚才编辑的那个节点上,而不是有用户再去一个一个展开的找到刚才那个点。

--------------------------------------------------------

up

--------------------------------------------------------

private void Expanded(TreeNode pnode,string value)
    {
        if(pnode.Value==value)
        {
        if (pnode.ChildNodes.Count > 0)
        {
            pnode.SelectAction = TreeNodeSelectAction.None;
            foreach (TreeNode node in pnode.ChildNodes)
            {
                Expanded(node);
            }
        }
        }
    }


--------------------------------------------------------

private void Expanded(TreeNode pnode,string value)
    {
        if(pnode.Value==value)
        {
        if (pnode.ChildNodes.Count > 0)
        {
            pnode.Expanded();
            foreach (TreeNode node in pnode.ChildNodes)
            {
                Expanded(node);
            }
        }
        }
    }


--------------------------------------------------------

递归绑定treeview 判断每个节点的ID值是否等于传入的ID值,相等,就Expanded();

--------------------------------------------------------

正确的定位代码:
    private void NewExpandNode(TreeNode TNode, string Value)
    {
        if (TNode.Value.Trim() == Value.Trim())
        {
            TNode.Expand();
            ExpandParent(TNode);
        }
        else        
            foreach (TreeNode node in TNode.ChildNodes)
            {
                NewExpandNode(node,Value);
            }
    }

    private void NewExpandNode(TreeView MyTreeView, string Value)
    {
        for (int i = 0; i < MyTreeView.Nodes.Count;i++ )
        {
            if (MyTreeView.Nodes[i].Value.Trim() == Value.Trim())
            {
                MyTreeView.Nodes[i].Expand();
                ExpandParent(MyTreeView.Nodes[i]);
            }
            else
                NewExpandNode(MyTreeView.Nodes[i], Value);               
        }
    }

    private void ExpandParent(TreeNode TNode)
    {
        if (TNode.Parent != null)
        {
            TNode.Parent.Expand();
            ExpandParent(TNode.Parent);
        }
    }

调用:
NewExpandNode(TreeView, Value);

需要显示的展开节点到父节点才可以。

多谢各位兄弟的关注



推荐文章
联盟网站

浙ICP备 :07003766号 Copyright © 2001-2007 JUBAO163,All rights reserved.