日期:2014-05-18  浏览次数:20470 次

如何用程序控制TreeView2.0的展开与折叠??
我可以通过程序找到某个节点。
如果这个节点是父结点,那么这个节点直接展开,如果找到的是叶节点,那么把该叶节点的父节点展开。

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

多谢!

------解决方案--------------------
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
------解决方案--------------------
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();