TreeView点击之后保持点击节点的方法
2009-06-27 16:20
381 查看
由于微软的TreeView设计成提交式的,所以有的人写程序的时候喜欢在把node.NavigateUrl写成本页再加上一个参数(我原来也喜欢这么做),这样做的后果是一提交之后,treeView又回到原来的样式,原来点的节点又缩回去,让用户不知道点了哪一个节点,网上有很多人给了思路,以下是解决方法。
一:首先在给节点赋值的时候不要给NavigateUrl赋值。把整个TreeView的TreeView1.ExpandDepth设成1级或者二级,看你的情况而定,默认为全部展开。
二:给TreeView添加SelectedNodeChanged事件,如下:
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
string typeId = TreeView1.SelectedNode.Value;
string typeName = TreeView1.SelectedNode.Text;
string path = "Default.aspx?typeId=" + typeId + "&typeName=" + Server.UrlEncode(typeName);
Context.Items["path"] = TreeView1.SelectedNode.ValuePath;
Server.Transfer(path);
}
三:在Page_load事件加入以下代码:
if (!IsPostBack)
{
if (Context.Items["path"] != null)
{
TreeNode node = TreeView1.FindNode(Context.Items["path"].ToString()) as TreeNode;
if (node != null)
{
expand(node);
node.Selected = true;
}
}
}
四:另外写一个方法 expand(TreeNode node)
private void expand(TreeNode node)
{
if (node.Parent != null)
{
node.Parent.Expanded = true;
expand(node.Parent);
}
}
五:设置一下SelectNodeStyle,使选择的节点满足您的要求。
当然也有牛人手动写树,不过要是无限级的话,那可是麻烦事。
一:首先在给节点赋值的时候不要给NavigateUrl赋值。把整个TreeView的TreeView1.ExpandDepth设成1级或者二级,看你的情况而定,默认为全部展开。
二:给TreeView添加SelectedNodeChanged事件,如下:
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
string typeId = TreeView1.SelectedNode.Value;
string typeName = TreeView1.SelectedNode.Text;
string path = "Default.aspx?typeId=" + typeId + "&typeName=" + Server.UrlEncode(typeName);
Context.Items["path"] = TreeView1.SelectedNode.ValuePath;
Server.Transfer(path);
}
三:在Page_load事件加入以下代码:
if (!IsPostBack)
{
if (Context.Items["path"] != null)
{
TreeNode node = TreeView1.FindNode(Context.Items["path"].ToString()) as TreeNode;
if (node != null)
{
expand(node);
node.Selected = true;
}
}
}
四:另外写一个方法 expand(TreeNode node)
private void expand(TreeNode node)
{
if (node.Parent != null)
{
node.Parent.Expanded = true;
expand(node.Parent);
}
}
五:设置一下SelectNodeStyle,使选择的节点满足您的要求。
当然也有牛人手动写树,不过要是无限级的话,那可是麻烦事。
相关文章推荐
- TreeView点击之后保持点击节点的方法 (展开后刷新仍保持展开状态的方法)
- 保持TreeView(微软的)父子节点的CheckBox节点状态一致的一种方法
- 史上最全selector和shape使用方法 Android ListView 列表项点击之后,保持背景颜色
- 递归生成treeview树形节点(没有用递归函数之后会有补充,这里只用系统的内置方法去生成)
- 保持TreeView父子节点的CheckBox节点状态一致的一种方法
- 在TreeView节点上点击右键触发选中该节点的方法
- C#WINDOW VS2015 c#TreeView 之后点击树中的任何一个节点,触发事件问题
- vb.net treeView的同一个节点第二次点击(连续),不执行事件
- 默认选中TreeView某个节点的方法 --ASP.NET
- 窗体上有一个TreeView和若干个TextBox控件,我希望当点击treeview中的某个节点时能让指定的TextBox得到焦点。
- TreeView父子联动效果保持节点状态一致
- jQuery插件treeview点击节点名称不展开、收缩节点
- 关于treeView1_AfterSelect方法中节点的使用(代码介绍)
- Android ListView点击之后保持更换的背景色,实现已读功能
- ASP.NET弹出提示点击确定之后再跳转页面的方法
- winform如何保持TreeView节点展开和折叠的状态
- winform的treeview控件点击鼠标右键就改变SelectedNode属性的方法
- TreeView 不刷新获得节点值的方法 --- asp.net 2.0
- 点击之后从浏览器回到微信界面的方法
- 使用递归方法获得TreeView中CheckBox选中的节点