网页中的动态生成的TreeView,修改某个节点的值,点保存后页面刷新,节点就会自动收缩。有什么办法,可以展开刚修改过的这个节点的父节点,并且选中这个修改的节点。。高手帮帮忙~~感激不尽~~
解决方案 »
- GridView 动态添加超链接
- 我用VS2010开发的项目,framework 4.0的,但虚拟主机那边只支持3.5的。怎么办?
- document.getElementById(<%=Img1.ClientID %>).src,想写在行内,怎么写
- 如何删除数据冗余的问题
- asp.net常见问题求解?
- lishaozhang
- Anakrino Interim反编译c#dll这个东东咋使用哇?
- 关于在ASP.net 2.0中网站的美工问题.皮肤文件里的CSS样式是自己手写代码完成的吗?
- 200分求,OA系统的源代码,绝无商业用途,学习用
- 重金求购
- 如何选好.net呢?
- 教我们怎样使用asp.net连接MySQL?
TreeView.selectNode设置选中节点
动态生成的TreeView,刷新之后就没了。假设你在page_load中重建TreeView,要注意千万不要重建节点。只要重建TreeView控件(并且保证其ID跟上一次输出html时使用的ID一样),那么asp.net就会自动给你填充和重建所有节点的。
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:Button ID="Button1" runat="server" Text="回发测试" onclick="Button1_Click" /> <asp:Button ID="Button2"
runat="server" Text="创建树" onclick="Button2_Click" />
<hr />
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</form>
</body>
</html>
using System;
using System.Drawing;
using System.Web.UI.WebControls;public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (ViewState["treeview"] != null && (bool)ViewState["treeview"])
PlaceHolder1.Controls.Add(new TreeView { ID = "myTestTree" });
}
protected void Button1_Click(object sender, EventArgs e)
{ }
protected void Button2_Click(object sender, EventArgs e)
{
PlaceHolder1.Controls.Clear();
var tr = new TreeView { ID = "myTestTree" };
PlaceHolder1.Controls.Add(tr);
tr.ShowLines = true;
tr.SelectedNodeStyle.BackColor= Color.LightCyan;
var n = new TreeNode { Text = "n1" };
tr.Nodes.Add(n);
n = new TreeNode { Text = "n2" };
tr.Nodes.Add(n);
var m = new TreeNode { Text = "n3" };
n.ChildNodes.Add(m);
ViewState["treeview"] = true;
}
}
注意page_load中是如何重建TreeView的。你可以运行它,设置收缩、选中节点,然后点击“回发测试”按钮看看状态并不会丢失。如果你多此一举地在page_load中额外设置它的属性,反而就是画蛇添足了。