![]() |
下面是一个使用GridView控件添加数据,并保存到 XML 文件的例子。初始化时文件可以不存在,可以为空内容
<?xml version="1.0" standalone="yes"?>
<c>
<e id="1">
<name>xx</name>
<email>xx.com</email>
</e>
<e id="2">
<name>xx</name>
<email>xx.com</email>
</e>
</c>
完整的实现代码
<%@ Page Language="C#" Trace="false" AutoEventWireup="true" %>
<%@ Import Namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
String file = Server.MapPath("~/App_Data/ClientEmails.xml");
if (!System.IO.File.Exists(file))
{
HiddenField1.Value = "Blank";
return;
}
String xml = System.IO.File.ReadAllText(file);
if (xml.Trim().Equals(String.Empty))
{
HiddenField1.Value = "Blank";
return;
}
bind();
}
}
void bind()
{
System.Data.DataSet ds = new System.Data.DataSet();
ds.ReadXml(Server.MapPath("~/App_Data/ClientEmails.xml"));
grvEmail.DataSource = ds.Tables[0];
grvEmail.DataBind();
grvEmail.HeaderRow.Cells[0].Text = "姓名";
grvEmail.HeaderRow.Cells[1].Text = "电子邮件";
grvEmail.HeaderRow.Cells[2].Visible = false;
grvEmail.FooterRow.Cells[2].Visible = false;
for (int i = 0; i < grvEmail.Rows.Count; i++)
{
grvEmail.Rows[i].Cells[2].Visible = false;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
if (HiddenField1.Value.Equals("Blank"))
{
// 首次添加。创建新文件
String file = Server.MapPath("~/App_Data/ClientEmails.xml");
if (System.IO.File.Exists(file))
{
System.IO.File.Delete(file);
}
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
//创建xml声明
System.Xml.XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", "yes");
doc.AppendChild(dec);
System.Xml.XmlNode root = doc.CreateElement("c");
System.Xml.XmlNode ee = doc.CreateElement("e");
System.Xml.XmlAttribute id = doc.CreateAttribute("id");
id.Value = "-100";
ee.Attributes.Append(id);
System.Xml.XmlNode name = doc.CreateElement("name");
System.Xml.XmlNode email = doc.CreateElement("email");
ee.AppendChild(name);
ee.AppendChild(email);
root.AppendChild(ee);
doc.AppendChild(root);
doc.Save(file);
}
System.Data.DataSet ds = new System.Data.DataSet();
ds.ReadXml(Server.MapPath("~/App_Data/ClientEmails.xml"));
System.Data.DataTable table = ds.Tables[0];
System.Data.DataRow[] rs = table.Select("", "id desc");
String MaxId = rs[0]["id"].ToString();
int maxId = MaxId == "-100" ? 0 : Int32.Parse(MaxId);
for (int i = 0; i < Request.Form.AllKeys.Length; i++)
{
string id = "";
if (Request.Form.AllKeys[i].StartsWith("xm"))
{
maxId++;
id = Request.Form.AllKeys[i].Substring(2);
String xm = Request.Form["xm" + id];
String yj = Request.Form["yj" + id];
System.Data.DataRow dr = table.NewRow();
dr["name"] = xm;
dr["email"] = yj;
dr["id"] = maxId;
table.Rows.Add(dr);
}
}
if (MaxId == "-100")
{
table.Rows.RemoveAt(0);
table.AcceptChanges();
}
ds.WriteXml(Server.MapPath("~/App_Data/ClientEmails.xml"));
Response.Redirect(Request.UrlReferrer.ToString());
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>无标题页</title>
<script type="text/javascript">
var xm = '<%=TextBox1.ClientID %>';
var yj = '<%=TextBox2.ClientID %>';
var tb = '<%=grvEmail.ClientID %>';
var button1 = '<%=Button1.ClientID %>';
var i = 0;
function Add() {
x = document.getElementById(xm).value;
y = document.getElementById(yj).value;
t = document.getElementById(tb);
if (!t) {
t = document.createElement("table");
t.setAttribute("cellspacing",0);
t.setAttribute("rules","all");
t.setAttribute("border","1");
t.setAttribute("style","border-collapse:collapse");
t.id = "grvEmail";
tbody = document.createElement("tbody");
tr = document.createElement("tr");
th = document.createElement("th");
th.setAttribute("scope","col");
th.innerHTML = "姓名";
tr.appendChild(th)
th = document.createElement("th");
th.setAttribute("scope","col");
th.innerHTML = "电子邮件";
tr.appendChild(th)
tbody.appendChild(tr)
t.appendChild(tbody)
button1 = document.getElementById(button1);
button1.parentNode.insertBefore(t, button1);
}
tr = document.createElement("tr");
td = document.createElement("td");
td.innerHTML = x + "<input name=xm" + i + " value='" + x + "' type='hidden'>";
tr.appendChild(td);
td = document.createElement("td");
td.innerHTML = y + "<input name=yj" + i + " value='" + y + "' type='hidden'>"; ;
tr.appendChild(td);
t.tBodies[0].appendChild(tr);
i++;
return false;
}
</script>
</head>
<body>
<form id="form1" runat="server">
姓名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
邮件:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:Button ID="Button2" runat="server" Text="添加" OnClientClick="return Add()" />
<asp:GridView ID="grvEmail" runat="server">
</asp:GridView>
<asp:HiddenField ID="HiddenField1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="保存" OnClick="Button1_Click" />
</form>
</body>
</html>