asp.net Treeview节点保存成XML文件
2009-01-07 09:18
357 查看
递归treeview的节点,并保存成XML文件,让treeview无限级分类读取节点速度比较快
//生成XML文件
using System.Xml;
protected void Button1_Click(object sender, EventArgs e)
{
try
{
Init_Tree();
save();
Page.ClientScript.RegisterStartupScript(Page.GetType(), "ajaxjs", "alert('前台产品分类更新成功!')", true);
Button1.Enabled = false;
}
catch (Exception ex)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "ajaxjs", "alert('前台产品分类更新失败!')", true);
}
}
XmlDocument doc = new XmlDocument();
//遍历XML根节点
private void save()
{
// XmlTextWriter objXml = new XmlTextWriter(Server.MapPath("../XMLTest.xml"), null);
doc.LoadXml("<XMLTest></XMLTest>");
XmlNode root = doc.SelectSingleNode("XMLTest");
foreach (TreeNode tn in TreeView_Tree.Nodes)
{
XmlElement Test = doc.CreateElement("treenode");
XmlAttribute cid = doc.CreateAttribute("cid");
cid.InnerText = tn.Value;
Test.SetAttributeNode(cid);
XmlAttribute treenodename = doc.CreateAttribute("name");
treenodename.InnerText = tn.Text;
Test.SetAttributeNode(treenodename);
XmlAttribute treenodeUrl = doc.CreateAttribute("url");
treenodeUrl.InnerText = tn.NavigateUrl;
Test.SetAttributeNode(treenodeUrl);
root.AppendChild(Test);
if (tn.ChildNodes != null)
{
ChildNods(tn, Test);
}
}
doc.Save(Server.MapPath("../XMLTest.xml"));
}
//遍历XML子节点
private void ChildNods(TreeNode ParentNode, XmlElement Test)
{
foreach (TreeNode tn in ParentNode.ChildNodes)
{
XmlElement Ts = doc.CreateElement("treenode");
XmlAttribute cid = doc.CreateAttribute("cid");
cid.InnerText = tn.Value;
Ts.SetAttributeNode(cid);
XmlAttribute treenode2name = doc.CreateAttribute("name");
treenode2name.InnerText = tn.Text;
Ts.SetAttributeNode(treenode2name);
XmlAttribute treenode2Url = doc.CreateAttribute("url");
treenode2Url.InnerText = tn.NavigateUrl;
Ts.SetAttributeNode(treenode2Url);
Test.AppendChild(Ts);
if (tn.ChildNodes != null)
{
ChildNods(tn, Ts);
}
}
}
protected void Init_Tree()
{
//获取Faq树形目录节点
string sqlstr = "select * from Content_Class order by ClassOrder asc,cid desc";
DataSet DataSet_Tree = access_sql.GreatDs(sqlstr);
this.ViewState["DataSet_Tree"] = DataSet_Tree;
//调用递归函数,完成树形结构的生成
AddTree("0", (TreeNode)null);
}
//递归添加树的节点 参数ParentID为树的最大父结点
public void AddTree(string ParentID, TreeNode pNode)
{
DataSet DataSet_Tree = (DataSet)this.ViewState["DataSet_Tree"];
DataView DataView_Tree = new DataView(DataSet_Tree.Tables[0]);
//过滤ParentID,得到当前的所有子节点 ParentID为父节点ID
DataView_Tree.RowFilter = " ClassPre= '" + ParentID + "' ";
DataView_Tree.Sort = " ClassOrder ASC ";
//循环递归
foreach (DataRowView Row in DataView_Tree)
{
//声明节点
TreeNode Node = new TreeNode();
//绑定超级链接
// Node.NavigateUrl = baseinfo.Getpclassurl(Row["classname"].ToString(), Row["cid"].ToString());
string classname = access_sql.GetOneValue("select ClassName from Content_Class where cID=" + Row["cid"].ToString());
Node.NavigateUrl = baseinfo.Getpclassurl(classname, Row["cid"].ToString());
bool flag = false;
//开始递归
if (pNode == null)
{
//添加根节点
Node.Text = Row["classname"].ToString();
Node.Value = Row["cid"].ToString();
TreeView_Tree.Nodes.Add(Node);
Node.Expanded = flag; //节点状态闭
AddTree(Row["ClassId"].ToString(), Node); //再次递归
}
else
{
//添加当前节点的子节点
Node.Text = Row["classname"].ToString();
Node.Value = Row["cid"].ToString();
pNode.ChildNodes.Add(Node);
Node.Expanded = flag; //节点状态闭
AddTree(Row["ClassId"].ToString(), Node); //再次递归
}
}
}
//生成XML文件
using System.Xml;
protected void Button1_Click(object sender, EventArgs e)
{
try
{
Init_Tree();
save();
Page.ClientScript.RegisterStartupScript(Page.GetType(), "ajaxjs", "alert('前台产品分类更新成功!')", true);
Button1.Enabled = false;
}
catch (Exception ex)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "ajaxjs", "alert('前台产品分类更新失败!')", true);
}
}
XmlDocument doc = new XmlDocument();
//遍历XML根节点
private void save()
{
// XmlTextWriter objXml = new XmlTextWriter(Server.MapPath("../XMLTest.xml"), null);
doc.LoadXml("<XMLTest></XMLTest>");
XmlNode root = doc.SelectSingleNode("XMLTest");
foreach (TreeNode tn in TreeView_Tree.Nodes)
{
XmlElement Test = doc.CreateElement("treenode");
XmlAttribute cid = doc.CreateAttribute("cid");
cid.InnerText = tn.Value;
Test.SetAttributeNode(cid);
XmlAttribute treenodename = doc.CreateAttribute("name");
treenodename.InnerText = tn.Text;
Test.SetAttributeNode(treenodename);
XmlAttribute treenodeUrl = doc.CreateAttribute("url");
treenodeUrl.InnerText = tn.NavigateUrl;
Test.SetAttributeNode(treenodeUrl);
root.AppendChild(Test);
if (tn.ChildNodes != null)
{
ChildNods(tn, Test);
}
}
doc.Save(Server.MapPath("../XMLTest.xml"));
}
//遍历XML子节点
private void ChildNods(TreeNode ParentNode, XmlElement Test)
{
foreach (TreeNode tn in ParentNode.ChildNodes)
{
XmlElement Ts = doc.CreateElement("treenode");
XmlAttribute cid = doc.CreateAttribute("cid");
cid.InnerText = tn.Value;
Ts.SetAttributeNode(cid);
XmlAttribute treenode2name = doc.CreateAttribute("name");
treenode2name.InnerText = tn.Text;
Ts.SetAttributeNode(treenode2name);
XmlAttribute treenode2Url = doc.CreateAttribute("url");
treenode2Url.InnerText = tn.NavigateUrl;
Ts.SetAttributeNode(treenode2Url);
Test.AppendChild(Ts);
if (tn.ChildNodes != null)
{
ChildNods(tn, Ts);
}
}
}
protected void Init_Tree()
{
//获取Faq树形目录节点
string sqlstr = "select * from Content_Class order by ClassOrder asc,cid desc";
DataSet DataSet_Tree = access_sql.GreatDs(sqlstr);
this.ViewState["DataSet_Tree"] = DataSet_Tree;
//调用递归函数,完成树形结构的生成
AddTree("0", (TreeNode)null);
}
//递归添加树的节点 参数ParentID为树的最大父结点
public void AddTree(string ParentID, TreeNode pNode)
{
DataSet DataSet_Tree = (DataSet)this.ViewState["DataSet_Tree"];
DataView DataView_Tree = new DataView(DataSet_Tree.Tables[0]);
//过滤ParentID,得到当前的所有子节点 ParentID为父节点ID
DataView_Tree.RowFilter = " ClassPre= '" + ParentID + "' ";
DataView_Tree.Sort = " ClassOrder ASC ";
//循环递归
foreach (DataRowView Row in DataView_Tree)
{
//声明节点
TreeNode Node = new TreeNode();
//绑定超级链接
// Node.NavigateUrl = baseinfo.Getpclassurl(Row["classname"].ToString(), Row["cid"].ToString());
string classname = access_sql.GetOneValue("select ClassName from Content_Class where cID=" + Row["cid"].ToString());
Node.NavigateUrl = baseinfo.Getpclassurl(classname, Row["cid"].ToString());
bool flag = false;
//开始递归
if (pNode == null)
{
//添加根节点
Node.Text = Row["classname"].ToString();
Node.Value = Row["cid"].ToString();
TreeView_Tree.Nodes.Add(Node);
Node.Expanded = flag; //节点状态闭
AddTree(Row["ClassId"].ToString(), Node); //再次递归
}
else
{
//添加当前节点的子节点
Node.Text = Row["classname"].ToString();
Node.Value = Row["cid"].ToString();
pNode.ChildNodes.Add(Node);
Node.Expanded = flag; //节点状态闭
AddTree(Row["ClassId"].ToString(), Node); //再次递归
}
}
}
相关文章推荐
- ASP.NET中常用功能代码总结(4)——保存图片到XML文件
- asp.net读取Xml文件到DataSet,以及DataSet保存为Xml,利用自带的强大功能
- [网络收集]asp.net(c#) 保存xml数据(将数据写入到xml文件中)
- net9:磁盘目录文件保存到XML文档及其XML文档的读写操作,以及绑定XML到treeview
- asp.net怎么读取或保存xml文件里的数据范例
- Asp.net中C#增加删除查找与修改xml文件元素节点
- Barcode Professional for ASP.NET使用教程:条码图像保存到数据库或者XML文件
- asp.net读取Xml文件到DataSet,以及DataSet保存为Xml,利用自带的强大功能
- 在Asp.Net中如何将从SQL读出来的表转化成XML文件并保存在指定的位置中
- 在Asp.Net中如何将从SQL读出来的表转化成XML文件并保存在指定的位置中用C#
- asp.net读取Xml文件到DataSet,以及DataSet保存为Xml,利用自带的强大功能
- 【转】Asp.net直接保存文件到客户端 -流
- Asp.net配置文件中自定义节点详解
- winform中与asp.net中的 TreeView节点处理对比
- ASP.NET 2.0 TreeView中用JavaScript实现选择子接点CheckBox是自动选择上父节点(或者所有父节点)
- Asp.net直接保存文件到客户端
- Asp.net 文件上传基类(取得文件后缀名,保存文件,加入文字水印)
- Asp.net配置文件中自定义节点详解
- ASP.NET - 如何:添加或删除 TreeView 节点元素