namespace example_12
{
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
/// <summary>
/// _6 的摘要说明。
/// </summary>
public class _6 : Page
{
protected Label Label1;
protected Label Label2;
protected Label Label3;
protected Label Label4;
protected Label Label5;
protected Label Label6;
protected Label Label7;
protected TextBox txtID;
protected TextBox txtName;
protected DropDownList dplGender;
protected TextBox txtProvince;
protected TextBox txtCity;
protected TextBox txtStreet;
protected TextBox txtPhone;
protected TextBox txtMobilephone;
protected Button btnAddRecord;
protected Button btnNextRecord;
protected Label Label8;
protected System.Web.UI.WebControls.Button btnPreviousRecord;
protected System.Web.UI.WebControls.Button btnDeleteRecord;
protected static int index;//声明一个整形变量来表示当前记录的索引值(比如第一条记录index为0,第二条记录为1等);注意,此变量应该是一个static静态变量
private void Page_Load(object sender, EventArgs e)
{
// 在此处放置用户代码以初始化页面
if (!Page.IsPostBack)//当此页面为第一次加载时
{
index = 0;//设置index为0
LoadRecord(index);//显示索引值为0的记录
}
}
#region Web 窗体设计器生成的代码
protected override void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.btnDeleteRecord.Click += new System.EventHandler(this.btnDeleteRecord_Click);
this.btnPreviousRecord.Click += new System.EventHandler(this.btnPreviousRecord_Click);
this.btnNextRecord.Click += new System.EventHandler(this.btnNextRecord_Click);
this.btnAddRecord.Click += new System.EventHandler(this.btnAddRecord_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void btnAddRecord_Click(object sender, EventArgs e)
{
AddRecord();//增加一条记录
}
private void LoadRecord(int index)
{
string filePath = Server.MapPath("通讯录(Created).xml");
XmlDocument doc = new XmlDocument();
XmlNode node = null;
XmlNodeList nodelist = null;
try
{
doc.Load(filePath);//装载路径所指定的文件
nodelist = doc.GetElementsByTagName("联系人");//得到名为"联系人"的一组元素节点
node = nodelist[index];//将node指向要显示的那个“联系人”节点
txtID.Text = node.Attributes[0].Value;//显示属性"ID"
node = node.FirstChild;//将node指向联系人的第一个子节点(姓名)
txtName.Text = node.InnerText;//显示“姓名”节点的值
node = node.NextSibling;//将node指向“姓名”的下一个兄弟节点(性别)
dplGender.SelectedValue = node.InnerText;//显示“性别”节点的值
node = node.NextSibling.FirstChild;//将node指向“姓名”的下一个兄弟节点的子节点(省份)
txtProvince.Text = node.InnerText;//显示“省份”节点的值
node = node.NextSibling;//将node指向“省份”节点的下一个兄弟节点(城市)
txtCity.Text = node.InnerText;//显示“城市”节点的值
node = node.NextSibling;//将node指向“城市”节点的下一个兄弟节点
txtStreet.Text = node.InnerText;//显示“街道”节点的值
node = node.ParentNode.NextSibling;//将node指向“街道”节点的父节点的下一个兄弟节点(电话)
txtPhone.Text = node.InnerText;//显示“街道”节点的值
node = node.NextSibling;//将node指向“街道”节点的下一个兄弟节点(手机)
txtMobilephone.Text = node.InnerText;//显示“手机”节点的值
}
catch (Exception err)
{
Response.Write(err.ToString());
}
finally
{
}
if (index == nodelist.Count - 1)
{
btnNextRecord.Enabled = false;//若当前处在最后一条记录,“下一条记录”按钮失效
}
else
{
btnNextRecord.Enabled = true;//若不是,“下一条记录”按钮有效
}
if (index == 0)
{
btnPreviousRecord.Enabled = false;//若当前处在第一条记录,“上一条记录”按钮失效
}
else
{
btnPreviousRecord.Enabled = true;//若不是,“上一条记录”按钮有效
}
}
private void AddRecord()
{
string filePath = Server.MapPath("通讯录(Created).xml");
XmlDocument doc = new XmlDocument();
XmlNode node = null;
XmlNode parentNode = null;
XmlAttribute attr = null;
try
{
doc.Load(filePath);//装载事先已存在的XML文件(初始文件内容应该为 <xml version="1.0" encoding="utf-8"><通讯录></通讯录>)
node = doc.CreateElement("联系人");//将node指向新创建的元素节点“联系人”
attr = doc.CreateAttribute("ID");//将attr指向新创建的属性“ID”
attr.Value = txtID.Text.Trim();//将输入的值作为属性“ID”的Value
node.Attributes.Append(attr);//将属性“ID”添加到元素节点“联系人”
parentNode = doc.DocumentElement;//将parentNode指向此XML文档的根元素(通讯录)
parentNode.AppendChild(node);//将“联系人”节点添加为“通讯录”节点的子节点
parentNode = node;//将parentNode指向当前node(联系人)
node = doc.CreateElement("姓名");//创建“姓名”节点
node.InnerText = txtName.Text.Trim();
parentNode.AppendChild(node);
node = doc.CreateElement("性别");//创建“性别”节点
node.InnerText = dplGender.SelectedValue;
parentNode.AppendChild(node);
node = doc.CreateElement("地址");//创建“地址”节点
parentNode.AppendChild(node);
parentNode = node;//将parentNode指向当前node(地址)
node = doc.CreateElement("省份");//创建“省份”节点
node.InnerText = txtProvince.Text.Trim();
parentNode.AppendChild(node);
node = doc.CreateElement("城市");//创建“城市”节点
node.InnerText = txtCity.Text.Trim();
parentNode.AppendChild(node);
node = doc.CreateElement("街道");//创建“街道”节点
node.InnerText = txtStreet.Text.Trim();
parentNode.AppendChild(node);
parentNode = parentNode.ParentNode;//将parentNode指向当前节点的父节点(联系人)
node = doc.CreateElement("电话");//创建“电话”节点
node.InnerText = txtPhone.Text.Trim();
parentNode.AppendChild(node);
node = doc.CreateElement("手机");//创建“手机”节点
node.InnerText = txtMobilephone.Text.Trim();
parentNode.AppendChild(node);
doc.Save(filePath);//将DOM保存为XML文档
index++;//索引+1
LoadRecord(index);//显示新添加的记录
Response.Write("记录添加成功");
}
catch (Exception err)
{
Response.Write(err.ToString());
}
finally
{
}
}
private void btnNextRecord_Click(object sender, EventArgs e)
{
index++;
LoadRecord(index);//显示下一条记录
}
private void btnPreviousRecord_Click(object sender, System.EventArgs e)
{
index--;
LoadRecord(index);//显示上一条记录
}
private void btnDeleteRecord_Click(object sender, System.EventArgs e)
{
string filePath = Server.MapPath("通讯录(Created).xml");
XmlDocument doc = new XmlDocument();
XmlNode node = null;
XmlNodeList nodelist = null;
XmlNode parentNode = null;
try
{
doc.Load(filePath);
nodelist = doc.GetElementsByTagName("联系人");
node = nodelist[index];
parentNode = doc.DocumentElement;//将parentNode指向文档的根节点(通讯录)
parentNode.RemoveChild(node);//将当前的“联系人”删除
doc.Save(filePath);//保存XML文档。(无必要保存,否则文件不会有任何变化)
if (index != 0)
{
index--;
}
LoadRecord(index);//显示上一条记录
Response.Write("记录删除成功");
}
catch (Exception err)
{
Response.Write(err.ToString());
}
finally
{
}
}
}
}