具体效果如下 ,因为是上课用的例题,所以比较全
| 广告列表 | 功能选项 | ||||||||
| 阿里妈妈广告 Google广告 |
| ||||||||
| Name | Image | Alink |
|---|---|---|
| 阿里妈妈广告 | ~/image/aaa.gif | http://www.thc违规广告/bbs |
| 天轰穿的淘宝小店 | ~/image/fdfd.jpeg | http://shop.thc违规广告/ |
前台代码如下
1<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
2
3http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5http://www.w3.org/1999/xhtml">
6
43 广告列表 | 45 功能选项 | ||||||||
49 51 52 | 54
88 | ||||||||
default.aspx.cs文件的全部代码
1using System;
2using System.Configuration;
3using System.Data;
4using System.Web;
5using System.Web.Security;
6using System.Web.UI;
7using System.Web.UI.HtmlControls;
8using System.Web.UI.WebControls;
9using System.Web.UI.WebControls.WebParts;
10
11using System.Xml;
12
13public partial class _Default : System.Web.UI.Page
14{
15 protected void Page_Load(object sender, EventArgs e)
16 {//页面载入
17 string fpath = Server.MapPath("~/App_Data/Ad.xml");
18
19 if (System.IO.File.Exists(fpath))//如果指定的XML文件已经存在,那么就不显示创建XML文件的按钮
20 {
21 Button4.Visible = false;
22 if(!IsPostBack)//如果页面是回发的话就不用加载了,不是回发的才加载
23 Bind();
24 }
25
26
27 }
28
29 private void Bind()
30 {
31 ListBox1.Items.Clear();//为了不引起加载重复值,先清理ListBox1里面的项,简单来说就是每次加载项都是全新的
32 XmlDocument xd = GetXdt();
33
34 //获取跟节点下的所有子节点
35 //XmlNodeList xnl = xd.SelectNodes("descendant::Ad[/AdList]");//或者使用下面这句,如果不清楚意思的参考Xpath语言
36 //XmlNodeList xnl = xd.SelectNodes("AdList/Ad");//再或者使用下面这句
37 XmlNodeList xnl = xd.DocumentElement.ChildNodes;
38 foreach (XmlNode xn in xnl)
39 {
40 ListBox1.Items.Add(xn.FirstChild.InnerText);
41 }
42
43 //========填充GridView
44 string fpath = Server.MapPath("~/App_Data/Ad.xml");
45 DataSet ds = new DataSet();
46 ds.ReadXml(fpath);//将XML文档加载到DataSet中去, 看到这里, 我想大家应该能够想到,是否我们可以所有增删改的操作都在DataSet中来完成呢?
47 GridView1.DataSource = ds.Tables[0].DefaultView;
48 GridView1.DataBind();
49 }
50
51 /**////
52 /// 返回一个 XmlDocument 对象
53 ///
54 ///
55 private XmlDocument GetXdt()
56 {
57 string fpath = Server.MapPath("~/App_Data/Ad.xml");
58 XmlDocument xd = new XmlDocument();
59 xd.Load(fpath);
60
61 return xd;
62 }
63 protected void Button4_Click(object sender, EventArgs e)
64 {//创建XML文档
65 XmlDocument xd = new XmlDocument();
66 xd.LoadXml("
67
68 xd.Save(Server.MapPath("Ad.xml"));
69 Button4.Visible = false;
70 }
71 protected void Button1_Click(object sender, EventArgs e)
72 {//添加广告
73 string fpath = Server.MapPath("~/App_Data/Ad.xml");
74 XmlDocument xd = GetXdt();
75
76 第一种添加节点的方法#region 第一种添加节点的方法
77 /**//*
78 //创建一个广告节点元素
79 XmlNode xn = xd.CreateNode(XmlNodeType.Element, "Ad", null);
80 //添加广告名节点
81 XmlNode xnname = xd.CreateNode(XmlNodeType.Element, "Name", null);
82 xnname.InnerText = tb_name.Text;
83 xn.AppendChild(xnname);
84 //添加广告图片地址节点
85 XmlNode xnimg = xd.CreateNode(XmlNodeType.Element, "Image", null);
86 xnimg.InnerText = tb_img.Text;
87 xn.AppendChild(xnimg);
88 //添加广告链接指向地址
89 XmlNode xnlink = xd.CreateNode(XmlNodeType.Element, "Alink", null);
90 xnlink.InnerText = tb_link.Text;
91 xn.AppendChild(xnlink);
92 * */
93 #endregion
94
95 第二种添加节点的方法#region 第二种添加节点的方法
96
97 XmlNode xn = xd.CreateNode(XmlNodeType.Element, "Ad", null);
98 xn.InnerXml = "
99
100 #endregion
101 xd.DocumentElement.AppendChild(xn);//将整个大的节点添加到跟节点下面
102 xd.Save(fpath);
103 Bind();
104 }
105 protected void Button2_Click(object sender, EventArgs e)
106 {//修改节点 天轰穿的淘宝小店 http://shop.thc违规广告/
107 string fpath = Server.MapPath("~/App_Data/Ad.xml");
108 XmlDocument xd = GetXdt();
109
110 XmlNodeList xnl = xd.SelectNodes("AdList/Ad");//找到所有的单个广告节点,另外种方法参考下面ListBox1_SelectedIndexChanged方法
111 foreach (XmlNode xn in xnl)//迭代所有广告
112 {
113 if (xn.FirstChild.InnerText == ListBox1.SelectedItem.Text)//要这样判断的前提是,你的XML文件中当前节点第一个字段肯定一定确定是ListBox1.SelectedItem.Text所显示的值
114 {
115 for (int i = 0; i < xn.ChildNodes.Count; i++)
116 { //循环当前节点的所有子节点
117 switch (i)
118 {
119 case 0:
120 xn.ChildNodes[i].InnerText = tb_name.Text;
121 break;
122 case 1:
123 xn.ChildNodes[i].InnerText = tb_img.Text;
124 break;
125 case 2:
126 xn.ChildNodes[i].InnerText = tb_link.Text;
127 break;
128 }
129 }
130 }
131 }
132
133 xd.Save(fpath);
134 Bind();
135 }
136 protected void Button3_Click(object sender, EventArgs e)
137 {//删除节点
138 string fpath = Server.MapPath("~/App_Data/Ad.xml");
139 XmlDocument xd = GetXdt();
140
141 第一种方法,比较浪费资源 http://shop.thc违规广告/#region 第一种方法,比较浪费资源 http://shop.thc违规广告/
142 //XmlNodeList xnl = xd.SelectNodes("AdList/Ad");
143 //foreach (XmlNode xn in xnl)
144 //{
145 // //要下面这样判断的前提是,你的XML文件中当前节点第一个字段肯定一定确定是ListBox1.SelectedItem.Text所显示的值
146 // if (xn.FirstChild.InnerText == ListBox1.SelectedItem.Text)
147 // xd.DocumentElement.RemoveChild(xn);
148 //}
149 #endregion
150
151 第二种方法,比较直接,建议学习下Xpath相关的知识#region 第二种方法,比较直接,建议学习下Xpath相关的知识
152 string xpath = "/AdList/Ad[Name='" + ListBox1.SelectedItem.Text + "']";
153 XmlNode xn = xd.SelectSingleNode(xpath);
154
155 xn.ParentNode.RemoveChild(xn);
156 #endregion
157
158
159 xd.Save(fpath);
160 Bind();
161 }
162 protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
163 {//点击广告填充右边文本框 http://shop.thc违规广告/
164 XmlDocument xd = GetXdt();
165
166 第一种方法#region 第一种方法
167 //XmlNodeList xnl = xd.SelectNodes("AdList/Ad");//找到所有的单个广告节点
168 //foreach (XmlNode xn in xnl)//迭代所有广告
169 //{
170 // if (xn.FirstChild.InnerText == ListBox1.SelectedItem.Text)//要这样判断的前提是,你的XML文件中当前节点第一个字段肯定一定确定是ListBox1.SelectedItem.Text所显示的值,否则你别骂川哥哥骗你哈,俺绝对是好人
171 // {
172 // for (int i = 0; i < xn.ChildNodes.Count; i++)
173 // { //循环当前节点的所有子节点
174 // switch (i)
175 // {
176 // case 0:
177 // tb_name.Text = xn.ChildNodes[i].InnerText;
178 // break;
179 // case 1:
180 // tb_img.Text = xn.ChildNodes[i].InnerText;
181 // break;
182 // case 2:
183 // tb_link.Text = xn.ChildNodes[i].InnerText;
184 // break;
185 // }
186 // }
187 // }
188 //}
189 #endregion
190
191 第二种方法#region 第二种方法
192 string xpath = "/AdList/Ad[Name='" + ListBox1.SelectedItem.Text + "']";
193 XmlNode xn = xd.SelectSingleNode(xpath);
194
195 for (int i = 0; i < xn.ChildNodes.Count; i++)
196 { //循环当前节点的所有子节点
197 switch (i)
198 {
199 case 0:
200 tb_name.Text = xn.ChildNodes[i].InnerText;
201 break;
202 case 1:
203 tb_img.Text = xn.ChildNodes[i].InnerText;
204 break;
205 case 2:
206 tb_link.Text = xn.ChildNodes[i].InnerText;
207 break;
208 }
209 }
210 #endregion
211 }
212}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12639172/viewspace-536507/ ,如需转载,请注明出处,否则将追究法律责任。