Treeview加载xml 添删改


今天我研究了Treeview与XML之间的操作,不喜欢太多理论,直接上图:

运行效果截图:

前台代码:

View Code
 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NewTreeviewToXml.aspx.cs" Inherits="usexml.NewTreeviewToXml" %>
2
3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml">
6 <head runat="server">
7 <title></title>
8 </head>
9 <body>
10 <form id="form1" runat="server">
11
12 <div>
13
14 <asp:Wizard ID="Wizard1" runat="server" ActiveStepIndex="0" BackColor="#E6E2D8"
15 BorderColor="#999999" BorderWidth="1px" Font-Names="Verdana"
16 Font-Size="0.8em" BorderStyle="Solid">
17 <HeaderStyle BackColor="#666666" BorderColor="#E6E2D8" BorderStyle="Solid"
18 BorderWidth="2px" Font-Bold="True" Font-Size="0.9em" ForeColor="White"
19 HorizontalAlign="Center" />
20 <NavigationButtonStyle BackColor="White" BorderColor="#C5BBAF"
21 BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" Font-Size="0.8em"
22 ForeColor="#1C5E55" />
23 <SideBarButtonStyle ForeColor="White" />
24 <SideBarStyle BackColor="#1C5E55" Font-Size="0.9em" VerticalAlign="Top" />
25 <StepStyle BackColor="#F7F6F3" BorderColor="#E6E2D8" BorderStyle="Solid"
26 BorderWidth="2px" />
27 <WizardSteps>
28 <asp:WizardStep runat="server" title="Step 1">
29
30
31
32 <table style="width: 100%;" >
33
34 <tr >
35 <td>
36
37
38
39
40 <asp:TreeView ID="TreeView1" runat="server" AutoGenerateDataBindings="False"
41 BorderColor="#E6E2D8" BorderStyle="Solid" ImageSet="Simple"
42 OnSelectedNodeChanged="TreeView1_SelectedNodeChanged" ShowLines="True">
43
44 <HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
45 <NodeStyle Font-Names="Tahoma" Font-Size="10pt" ForeColor="Black"
46 HorizontalPadding="0px" NodeSpacing="0px" VerticalPadding="0px" />
47 <ParentNodeStyle Font-Bold="False" />
48 <SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD"
49 HorizontalPadding="0px" VerticalPadding="0px" />
50
51 </asp:TreeView>
52
53
54 </td>
55 <td style="background-color:Green"></td>
56 <td>
57
58 <div> <div>当前节点:</div><asp:Label ID="txtNow" runat="server"></asp:Label></div>
59 <div style="height:10px"></div>
60 <div><div>新节点:</div> <asp:TextBox ID="txtNew" runat="server"></asp:TextBox></div>
61 <div style="height:10px"></div>
62 <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
63 ErrorMessage="不能为数字或特殊字符" ControlToValidate="txtNew" Display="Dynamic"
64 ValidationExpression="^[a-zA-Z\u4e00-\u9fa5]+$"></asp:RegularExpressionValidator>
65 <div>
66 <asp:Button ID="BthAdd" runat="server" Text="添加" OnClick="BthAdd_Click" />
67 <asp:Button ID="BthUpdata" runat="server" Text="修改" OnClick="BthUpdata_Click" />
68 <asp:Button ID="BthDel" runat="server" Text="删除" OnClick="BthDel_Click" />
69 <asp:Button ID="SaveXml" runat="server" Text="保存XML" OnClick="SaveXml_Click" />
70 </div>
71 </td>
72 </tr>
73
74 </table>
75
76
77
78 </asp:WizardStep>
79 <asp:WizardStep runat="server" title="Step 2">
80 </asp:WizardStep>
81 </WizardSteps>
82 </asp:Wizard>
83
84 </div>
85 </form>
86 <p>
87 &nbsp;</p>
88 </body>
89 </html>

 

后台代码:

View Code
  1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5 using System.Web.UI;
6 using System.Web.UI.WebControls;
7 using System.Xml;
8 using System.IO;
9
10 namespace usexml
11 {
12 public partial class NewTreeviewToXml : System.Web.UI.Page
13 {
14 protected void Page_Load(object sender, EventArgs e)
15 {
16 if (!IsPostBack)
17 {
18 XmlDocument xmldoc = new XmlDocument();
19 string spath = Server.MapPath("datasource/xmlsource.xml");
20 xmldoc.Load(spath);
21 TreeView1.Nodes.Clear();
22 TreeView1.Nodes.Add(new TreeNode(xmldoc.DocumentElement.Name));
23 TreeNode tnode = new TreeNode();
24 tnode = (TreeNode)TreeView1.Nodes[0];
25 addTreeNode(xmldoc.DocumentElement, tnode);
26 TreeView1.ExpandAll();
27
28
29 }
30 }
31
32 /// <summary>
33 /// 将XML的节点加载进treeview
34 /// </summary>
35 /// <param name="xmlNode"></param>
36 /// <param name="treeNode"></param>
37 private void addTreeNode(XmlNode xmlNode, TreeNode treeNode)
38 {
39 XmlNode xNode;//存放xml节点
40 TreeNode tNode;//存放树节点
41 XmlNodeList xNodeList;//存放节点集合(这里是所有子节点的集合)
42 if (xmlNode.HasChildNodes)//判断是否有子节点
43 {
44 xNodeList = xmlNode.ChildNodes;//子节点集合
45 for (int i = 0; i <= xNodeList.Count - 1; i++)
46 {
47 xNode = xmlNode.ChildNodes[i]; //获取当前子节点
48 TreeNode node = new TreeNode();
49
50 node.Text = xNode.Name;
51 treeNode.ChildNodes.Add(node);
52 tNode = treeNode.ChildNodes[i];//获取当前树节点
53 addTreeNode(xNode, tNode); //递归
54
55 }
56
57
58
59
60
61 }
62 else
63 {
64
65 //if (xmlNode.Name == "#text")
66 //{
67 // treeNode.Text = null;
68
69 //}
70 //else
71 //{
72 // treeNode.Text = xmlNode.Value;
73 //}
74 }
75
76
77 }
78
79 protected void BthAdd_Click(object sender, EventArgs e)
80 {
81
82 TreeNode SelectNode = TreeView1.SelectedNode;
83
84 TreeNode node = new TreeNode();
85 node.Text = txtNew.Text;
86 if (txtNew.Text != "")
87 {
88 if (txtNow.Text == "")
89 {
90 TreeView1.Nodes.Add(node);
91 }
92 else
93 {
94 SelectNode.ChildNodes.Add(node);
95 txtNew.Text = "";
96 TreeView1.SelectedNode.ExpandAll();
97 }
98 }
99
100 else
101 {
102 Response.Write("<Script Language=JavaScript>alert('选择节点或文本框不能为空!');</Script>");
103 }
104
105
106
107
108 }
109
110 protected void BthUpdata_Click(object sender, EventArgs e)
111 {
112
113 if (txtNew.Text != "" || txtNow.Text != "")
114 {
115
116 TreeNode SelectNode = TreeView1.SelectedNode;
117 SelectNode.Text = txtNew.Text;
118 txtNow.Text = SelectNode.Text;
119 txtNew.Text = "";
120
121 }
122
123 else
124 {
125 Response.Write("<Script Language=JavaScript>alert('选择节点或文本框不能为空!');</Script>");
126 }
127
128 }
129
130 protected void BthDel_Click(object sender, EventArgs e)
131 {
132
133
134
135
136
137 if (txtNow.Text != "")
138 {
139 TreeNode selectedNode = TreeView1.SelectedNode;
140 TreeNode parentNode = selectedNode.Parent;
141 if (parentNode == null)
142 {
143 //从treeview的节点集合中删除但前选中的节点
144 TreeView1.Nodes.Remove(selectedNode);
145 txtNew.Text = "";
146 txtNow.Text = "";
147 }
148 else
149 {
150 //从父节点的节点集合中删除当前选中的节点
151 parentNode.ChildNodes.Remove(selectedNode);
152 txtNew.Text = "";
153 txtNow.Text = "";
154
155 }
156 }
157 else
158 {
159
160 Response.Write("<Script Lanugage=JavaScript>alert('未选择节点或无法删除父节点!');</Script>");
161
162 }
163 }
164
165 protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
166 {
167 txtNow.Text = TreeView1.SelectedNode.Text;
168 }
169
170 private StreamWriter sr;
171 public void exportToXml(TreeView tv, string filename)
172 {
173 sr = new StreamWriter(filename, false, System.Text.Encoding.UTF8);
174 //Write the header
175 sr.WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\" ?>");
176 //Write our root node
177 sr.WriteLine("<" + TreeView1.Nodes[0].Text + ">");
178 foreach (TreeNode node in tv.Nodes)
179 {
180 saveNode(node.ChildNodes);
181 }
182 //Close the root node
183 sr.WriteLine("</" + TreeView1.Nodes[0].Text + ">");
184 sr.Close();
185 }
186
187 private void saveNode(TreeNodeCollection tnc)
188 {
189 foreach (TreeNode node in tnc)
190 {
191 //If we have child nodes, we'll write
192 //a parent node, then iterrate through
193 //the children
194 if (node.ChildNodes.Count > 0)
195 {
196 sr.WriteLine("<" + node.Text + ">");
197 saveNode(node.ChildNodes);
198 sr.WriteLine("</" + node.Text + ">");
199 }
200 else //No child nodes, so we just write the text
201 sr.WriteLine("<" + node.Text + "/>");
202 }
203 }
204
205 protected void SaveXml_Click(object sender, EventArgs e)
206 {
207
208 string spath = Server.MapPath("datasource/GodXmls.xml");
209 exportToXml(TreeView1, spath);
210 Response.Write("<Script Language=JavaScript>alert('保存成功!');</Script>");
211 }
212
213
214
215
216
217
218
219 }
220
221 }

所有代码都再这了

 

转载于:https://www.cnblogs.com/panan/archive/2011/12/18/2291625.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值