• 全部
  • .NET Framework
  • ASP
  • Web Services
  • .NET互联网桌面应用
  • VB
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • AppLauncher
  • 问答

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

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

怎样才能保持原来的节点状态呢
哪位大虾给出个高招。谢谢!!
...全文
264 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
回复
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2004-10-26 10:09
社区公告
暂无公告