<%--
guestpost.aspx
这个是留言簿主文件，展示了如何打开和写入一个XML文件从一个WEB表单取得数据。

--%>

<%@ Page Language="C#" EnableSessionState="False"  %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<%-- 上面的是留言簿正常运行需要引入的命名空间 --%>

<html>

	<head>
		<title>Welcome to Saurabh's GuestBook.</title>
		<script Language="C#" runat="server">
	
		//当submit按钮单击的时候触发该方法
		
		public void Submit_Click(Object sender, EventArgs e)
		{	

			//该路径下的 Xml 文件包含了所有的数据
			string dataFile = "db/guest.xml" ;
			//处理提交数据在 Try-Catch 模块
			try{

			//如果页面有效，继续执行
			if(Page.IsValid){

			errmess.Text="" ;
			//打开一个 FileStream 为了数据库的"读"模式
			FileStream fin;
 			fin= new FileStream(Server.MapPath(dataFile),FileMode.Open,FileAccess.Read,FileShare.ReadWrite);
			//生成一个  DataSet 对象
			DataSet guestData = new DataSet();
			//从数据库中读出数据
        		guestData.ReadXml(fin);
			fin.Close();
			//生成一个新的数据行
			DataRow newRow = guestData.Tables[0].NewRow();
			//使用表单提交值值填充数据行
			newRow["Name"]=Name.Text;
			newRow["Country"]=Country.Text;
			newRow["Email"]=Email.Text;
			newRow["Comments"]=Comments.Text;
			newRow["DateTime"]=DateTime.Now.ToString();
			//增加行到 DataSet
			guestData.Tables[0].Rows.Add(newRow);
			//为操作数据库，生成另外一个 filestream
			//专成"写"模式!
			FileStream fout ;
fout = new FileStream(Server.MapPath(dataFile),FileMode.Open,FileAccess.Write,FileShare.ReadWrite);
			
			guestData.WriteXml(fout, XmlWriteMode.WriteSchema);
			fout.Close();
			//隐藏表单面板
			formPanel.Visible=false;
			//显示“感谢”面板
			thankPanel.Visible=true;
			}
			}
			catch (Exception edd)
        		{
           			//产生任何例外的时候出现 
				errmess.Text="不能写入XML文件，因为 "+edd.ToString() ;
				
        		}
		}
		</script>
	<LINK href="mystyle.css" type=text/css rel=stylesheet>
	</head>
	<body topmargin="0" leftmargin="0" rightmargin="0" marginwidth="0" marginheight="0">
	<%-- 包含头文件 'header.inc' --%>
	<!-- #Include File="header.inc" --> 
	<br>
	<h3 align="center" class="newsbody">加入留言页面.</h3>
	<br>
	<asp:label id="errmess" text="" style="color:#FF0000" runat="server" />
<asp:Panel id=formPanel runat=server>
	<form runat="server">	
		<table border="0"  width="80%" align="Center">
			<tr >
				<td class="newsheading"><b>在留言簿中留言</b></td>
				<td class="newsheading">&nbsp;</td>
				
			</tr>
			<tr class="newsbody" >
				<td>名字 :</td>
				<td ><asp:textbox text="" id="Name" runat="server" /><asp:RequiredFieldValidator ControlToValidate=Name display=static runat=server>
*</asp:RequiredFieldValidator></td>
				
			</tr>
			<tr class="newsbody">
				<td>城市 :</td>
				<td><asp:textbox text="" id="Country" runat="server"/><asp:RequiredFieldValidator ControlToValidate=Country display=static runat=server>
*</asp:RequiredFieldValidator></td>
				
			</tr>
			<tr class="newsbody">
				<td>E-Mail :</td>
				<td><asp:textbox test="" id="Email" runat="server"/><asp:RequiredFieldValidator ControlToValidate=Email display=static runat=server>
*</asp:RequiredFieldValidator><asp:RegularExpressionValidator  runat="server"
            ControlToValidate="Email"
            ValidationExpression="[\w-]+@([\w-]+\.)+[\w-]+"
            Display="Static"
            Font-Name="verdana" Font-Size="10pt">请输入一个正确的Email地址</asp:RegularExpressionValidator></td>
				
			</tr>
			<tr class="newsbody">
				<td>内容 :</td>
				<td><asp:Textbox textmode=multiline id="Comments" columns="25" rows="4" runat="server" /></td>
				
			</tr>
			<tr class="newsbody">
				<td colspan="2" >
				<asp:Button class="newsheading" id="write" Text="提交" onClick="Submit_Click" runat="server"/></td>
				
			</tr>
		</table>
	</form></asp:Panel>

<asp:Panel id=thankPanel visible=false runat=server>
<p class="newsbody" align=center><b>谢谢您的留言!</b><br>
  <a href="viewguestbook.aspx">单击这里 </a> 查看留言簿。
</p>
</asp:Panel>
	
<!-- #Include File="footer.inc" --> 
</body>
</html>