所属分类:.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);
需要显示的展开节点到父节点才可以。
多谢各位兄弟的关注