大家帮忙想个办法,让页面刷新时TreeView控件的节点保持原来的展开/闭合的状态

wings2001 2004-10-26 10:09:19
我的详细情况是这样的
要做一个文档浏览界面
我用了frameset,左边frame是TreeView表示目录结构,右边frame显示文件夹和文档列表
现在要实现这样的功能:
在右边的frame中进行添加新文件夹的操作
当单击“添加”按钮后,希望在左边的TreeView中实时反映出目录结构的变化,即多出来一个表示新建文件夹的节点
我是这样做的,目录结构记录在xml文件中,TreeView控件根据xml文件生成节点
当单击“添加”按钮后,改写xml文件,然后刷新左边frame的页面,让TreeView重新加载数据
但是这样做TreeView就变成了初始状态,所有节点都是闭合的

怎样才能保持原来的节点状态呢
哪位大虾给出个高招。谢谢!!
...全文
324 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
egxsun 2004-11-12
  • 打赏
  • 举报
回复
up
xinfx 2004-11-12
  • 打赏
  • 举报
回复
想知道,帮你up
Peryee 2004-11-12
  • 打赏
  • 举报
回复
up,关注中~~~~~~~~
wings2001 2004-11-01
  • 打赏
  • 举报
回复
TO snowpine999:谢谢你的回复。请问Page_Load里面的
PublicDB.ClassPublicDB.ProjectOperate gettree = new PublicDB.ClassPublicDB.ProjectOperate();
是怎么回事?
wdfboy1978 2004-10-28
  • 打赏
  • 举报
回复
放在if(!Page.IsPostBack)里!
噯卟釋手 2004-10-26
  • 打赏
  • 举报
回复
我的 可以实现你说的功能 用的是UserControl 供参考

namespace SalesPromotion.UserControl
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Microsoft.Web.UI.WebControls;

/// <summary>
/// Region 的摘要说明。
/// </summary>
public class Region : System.Web.UI.UserControl
{
protected Microsoft.Web.UI.WebControls.TreeView TreeView1;
/// <summary>
/// 已选择的节点ID。
/// </summary>
public string SelectedNodeID
{
get
{
return this.TreeView1.GetNodeFromIndex(this.TreeView1.SelectedNodeIndex).ID;
}
}

/// <summary>
/// 已选节点的Text。
/// </summary>
public string SelectedNodeText
{
get
{
return this.TreeView1.GetNodeFromIndex(this.TreeView1.SelectedNodeIndex).Text;
}
set
{
this.TreeView1.GetNodeFromIndex(this.TreeView1.SelectedNodeIndex).Text = value;
}
}

/// <summary>
/// 获取已选节点的子节点数。
/// </summary>
public int SelectedNodeCount
{
get
{
return this.TreeView1.GetNodeFromIndex(this.TreeView1.SelectedNodeIndex).Nodes.Count;
}
}

private void Page_Load(object sender, System.EventArgs e)
{
if(!this.IsPostBack)
{
this.TreeView1.Nodes.Clear();
PublicDB.ClassPublicDB.ProjectOperate gettree = new PublicDB.ClassPublicDB.ProjectOperate();
DataTable region = gettree.GetRegion();
this.GetTree(this.TreeView1.Nodes,"",region);
}
}

private void GetTree(TreeNodeCollection parentnode, string pcode, DataTable region)
{
DataView dvtree = new DataView(region
, "regionCode like '"+pcode+"*' and len(regionCode)-2="+pcode.Length.ToString(),null,DataViewRowState.CurrentRows);
foreach(DataRowView myrow in dvtree)
{
TreeNode newnode = new TreeNode();
newnode.ID = myrow[1].ToString();
newnode.Text = myrow[2].ToString();
parentnode.Add(newnode);
if((bool)myrow[0] != true)
{
GetTree(newnode.Nodes, myrow[1].ToString(),region);
}
}
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion
}
}
噯卟釋手 2004-10-26
  • 打赏
  • 举报
回复
1

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧