我的详细情况是这样的
要做一个文档浏览界面
我用了frameset,左边frame是TreeView表示目录结构,右边frame显示文件夹和文档列表
现在要实现这样的功能:
在右边的frame中进行添加新文件夹的操作
当单击“添加”按钮后,希望在左边的TreeView中实时反映出目录结构的变化,即多出来一个表示新建文件夹的节点
我是这样做的,目录结构记录在xml文件中,TreeView控件根据xml文件生成节点
当单击“添加”按钮后,改写xml文件,然后刷新左边frame的页面,让TreeView重新加载数据
但是这样做TreeView就变成了初始状态,所有节点都是闭合的怎样才能保持原来的节点状态呢
哪位大虾给出个高招。谢谢!!
要做一个文档浏览界面
我用了frameset,左边frame是TreeView表示目录结构,右边frame显示文件夹和文档列表
现在要实现这样的功能:
在右边的frame中进行添加新文件夹的操作
当单击“添加”按钮后,希望在左边的TreeView中实时反映出目录结构的变化,即多出来一个表示新建文件夹的节点
我是这样做的,目录结构记录在xml文件中,TreeView控件根据xml文件生成节点
当单击“添加”按钮后,改写xml文件,然后刷新左边frame的页面,让TreeView重新加载数据
但是这样做TreeView就变成了初始状态,所有节点都是闭合的怎样才能保持原来的节点状态呢
哪位大虾给出个高招。谢谢!!
{
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
}
}
PublicDB.ClassPublicDB.ProjectOperate gettree = new PublicDB.ClassPublicDB.ProjectOperate();
是怎么回事?