1

<%
@ Page language="c#" Codebehind="query.aspx.cs" AutoEventWireup="false" Inherits="XML.query" %>2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >3
<HTML>4
<HEAD>5
<title>query</title>6
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">7
<meta content="C#" name="CODE_LANGUAGE">8
<meta content="JavaScript" name="vs_defaultClientScript">9
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">10
</HEAD>11
<body MS_POSITIONING="GridLayout">12
<form id="Form1" method="post" runat="server">13
<FONT face="宋体">14
<asp:label id="Label7" style="Z-INDEX: 122; LEFT: 264px; POSITION: absolute; TOP: 0px" runat="server"15
ForeColor="Red" Font-Bold="True" Font-Size="X-Large" BorderStyle="Ridge" BorderWidth="2px"16
Width="96px">调 查</asp:label></FONT>17
<TABLE id="Table1" style="Z-INDEX: 102; LEFT: 40px; WIDTH: 560px; POSITION: absolute; TOP: 48px; HEIGHT: 58px"18
cellSpacing="0" borderColorDark="#0066cc" cellPadding="0" width="560" border="1">19
<TR>20
<TD><FONT face="宋体">本例是根据微软广播邵志东老师的一个经典例题改做出来的,主要是实现的是将 DataSet转换成字符串.算是很经典的把复杂问题简单化了.</FONT></TD>21
</TR>22
</TABLE>23
<asp:label id="Label1" style="Z-INDEX: 103; LEFT: 40px; POSITION: absolute; TOP: 144px" runat="server">姓名:</asp:label><asp:textbox id="tbname" style="Z-INDEX: 104; LEFT: 96px; POSITION: absolute; TOP: 144px" runat="server"24
Width="104px"></asp:textbox><asp:label id="Label2" style="Z-INDEX: 105; LEFT: 256px; POSITION: absolute; TOP: 144px" runat="server">年龄:</asp:label><asp:textbox id="tbnl" style="Z-INDEX: 106; LEFT: 312px; POSITION: absolute; TOP: 144px" runat="server"25
Width="48px"></asp:textbox><asp:label id="Label3" style="Z-INDEX: 107; LEFT: 408px; POSITION: absolute; TOP: 144px" runat="server">E-mail:</asp:label><asp:textbox id="tbemail" style="Z-INDEX: 108; LEFT: 472px; POSITION: absolute; TOP: 144px" runat="server"26
Width="128px"></asp:textbox><asp:requiredfieldvalidator id="RequiredFieldValidator1" style="Z-INDEX: 109; LEFT: 96px; POSITION: absolute; TOP: 120px"27
runat="server" ControlToValidate="tbname" ErrorMessage="必须填写"></asp:requiredfieldvalidator><asp:rangevalidator id="RangeValidator1" style="Z-INDEX: 110; LEFT: 304px; POSITION: absolute; TOP: 120px"28
runat="server" ControlToValidate="tbnl" ErrorMessage="只能填写数字" Type="Integer" MinimumValue="5" MaximumValue="100"></asp:rangevalidator><asp:regularexpressionvalidator id="RegularExpressionValidator1" style="Z-INDEX: 111; LEFT: 472px; POSITION: absolute; TOP: 120px"29
runat="server" ControlToValidate="tbemail" ErrorMessage="邮件格式不正确" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:regularexpressionvalidator><asp:label id="q1" style="Z-INDEX: 112; LEFT: 72px; POSITION: absolute; TOP: 192px" runat="server">你是怎么知道洪川医药的?</asp:label><asp:label id="Label4" style="Z-INDEX: 113; LEFT: 24px; POSITION: absolute; TOP: 192px" runat="server">一:</asp:label><asp:radiobuttonlist id="r1" style="Z-INDEX: 114; LEFT: 64px; POSITION: absolute; TOP: 224px" runat="server"30
Width="536px" RepeatDirection="Horizontal">31
<asp:ListItem Value="网上搜索得到的">网上搜索得到的</asp:ListItem>32
<asp:ListItem Value="朋友告诉的">朋友告诉的</asp:ListItem>33
<asp:ListItem Value="其他方式">其他方式</asp:ListItem>34
<asp:ListItem Value="现在才知道">现在才知道</asp:ListItem>35
</asp:radiobuttonlist><asp:label id="Label5" style="Z-INDEX: 115; LEFT: 24px; POSITION: absolute; TOP: 256px" runat="server">二:</asp:label><asp:label id="q2" style="Z-INDEX: 116; LEFT: 72px; POSITION: absolute; TOP: 264px" runat="server">你觉得中国医药黑幕是我们这样的个人能反抗的吗?</asp:label><asp:radiobuttonlist id="r2" style="Z-INDEX: 117; LEFT: 64px; POSITION: absolute; TOP: 296px" runat="server"36
Width="528px" RepeatDirection="Horizontal">37
<asp:ListItem Value="要人多齐心">要人多齐心</asp:ListItem>38
<asp:ListItem Value="没希望">没希望</asp:ListItem>39
<asp:ListItem Value="有如梦呓">有如梦呓</asp:ListItem>40
<asp:ListItem Value="绝对可以">绝对可以</asp:ListItem>41
</asp:radiobuttonlist><asp:label id="Label6" style="Z-INDEX: 118; LEFT: 24px; POSITION: absolute; TOP: 336px" runat="server">三:</asp:label><asp:label id="q3" style="Z-INDEX: 119; LEFT: 72px; POSITION: absolute; TOP: 336px" runat="server">按照你看www.hc115.com这个站能做大吗?</asp:label><asp:radiobuttonlist id="r3" style="Z-INDEX: 120; LEFT: 72px; POSITION: absolute; TOP: 360px" runat="server"42
Width="520px" RepeatDirection="Horizontal">43
<asp:ListItem Value="只要坚持,肯定可以">只要坚持,肯定可以</asp:ListItem>44
<asp:ListItem Value="难与上青天">难与上青天</asp:ListItem>45
<asp:ListItem Value="无所谓">无所谓</asp:ListItem>46
<asp:ListItem Value="无聊">无聊</asp:ListItem>47
</asp:radiobuttonlist><asp:button id="Button1" style="Z-INDEX: 121; LEFT: 96px; POSITION: absolute; TOP: 416px" runat="server"48
Width="416px" Text="提交调查"></asp:button></form>49
</body>50
</HTML>51

1
using System;2
using System.Collections;3
using System.ComponentModel;4
using System.Data;5
using System.Drawing;6
using System.Web;7
using System.Web.SessionState;8
using System.Web.UI;9
using System.Web.UI.WebControls;10
using System.Web.UI.HtmlControls;11
using System.IO;12

13
namespace XML14


{15

/**//// <summary>16
/// query 的摘要说明。17
/// 要转载的朋友请写明出处 田洪川,洪川医药-www.hc115.com18
/// </summary>19
public class query : System.Web.UI.Page20

{21
protected System.Web.UI.WebControls.Label Label1;22
protected System.Web.UI.WebControls.TextBox tbname;23
protected System.Web.UI.WebControls.Label Label2;24
protected System.Web.UI.WebControls.TextBox tbnl;25
protected System.Web.UI.WebControls.Label Label3;26
protected System.Web.UI.WebControls.TextBox tbemail;27
protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1;28
protected System.Web.UI.WebControls.RangeValidator RangeValidator1;29
protected System.Web.UI.WebControls.RegularExpressionValidator RegularExpressionValidator1;30
protected System.Web.UI.WebControls.Label q1;31
protected System.Web.UI.WebControls.Label Label4;32
protected System.Web.UI.WebControls.RadioButtonList r1;33
protected System.Web.UI.WebControls.Label Label5;34
protected System.Web.UI.WebControls.Label q2;35
protected System.Web.UI.WebControls.RadioButtonList r2;36
protected System.Web.UI.WebControls.Label Label6;37
protected System.Web.UI.WebControls.Label q3;38
protected System.Web.UI.WebControls.RadioButtonList r3;39
protected System.Web.UI.WebControls.Label Label7;40
protected System.Web.UI.WebControls.Button Button1;41
42
private void Page_Load(object sender, System.EventArgs e)43

{44
// 在此处放置用户代码以初始化页面45
}46

47

Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码48
override protected void OnInit(EventArgs e)49

{50
//51
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。52
//53
InitializeComponent();54
base.OnInit(e);55
}56
57

/**//// <summary>58
/// 设计器支持所需的方法 - 不要使用代码编辑器修改59
/// 此方法的内容。60
/// </summary>61
private void InitializeComponent()62

{ 63
this.Button1.Click += new System.EventHandler(this.Button1_Click);64
this.Load += new System.EventHandler(this.Page_Load);65

66
}67
#endregion68

69
private void Button1_Click(object sender, System.EventArgs e)70

{71
DataSet ads=new DataSet("ads");72
if(!File.Exists(Server.MapPath("\\xml\\xml\\query.xml")))73

{//如果文件不存在就创建74
DataTable adt=new DataTable("query");//创建名字叫query的数据表75
adt.Columns.Add("id",typeof(int));76
adt.Columns.Add("name",typeof(string));77
adt.Columns.Add("nl",typeof(int));78
adt.Columns.Add("email",typeof(string));79
adt.Columns.Add("item",typeof(string));80
ads.Tables.Add(adt);81
}82
else83

{//否则就读取84
ads.ReadXml(Server.MapPath("\\xml\\xml\\query.xml"));85
}86
DataRow adr=ads.Tables[0].NewRow();87
adr["id"]=ads.Tables[0].Rows.Count+1;//取出数据的最大项加 1,这个方法也算半个小技巧了88
adr["name"]=this.tbname.Text.Trim();89
adr["nl"]=this.tbnl.Text;90
adr["email"]=this.tbemail.Text;91
//开始子集92
DataSet bds=new DataSet("item");//建立名字为item的子集93
DataTable bdt=new DataTable("ditem");//当然有个表还是必要的94
bds.Tables.Add(bdt);//将表加如到item集中去95
bdt.Columns.Add("qid",typeof(int));96
bdt.Columns.Add("qtitle",typeof(string));97
bdt.Columns.Add("ans",typeof(string));98
99
for(int i=1;i<=3;i++)//前面我们定制了三个问题,所以就循环三次了,又因为没有q0的控件,所以从一开始循环100

{101
DataRow bdr=bds.Tables[0].NewRow();//子表行102
bdr["qid"]=i;103
bdr["qtitle"]=((Label)this.FindControl("q"+i.ToString())).Text;104
RadioButtonList rbl=(RadioButtonList)this.FindControl("r"+i.ToString());//内层循环用与得到答案105
for(int j=0;j<4;j++)106

{107
if(rbl.Items[j].Selected)108

{109
bdr["ans"]=rbl.Items[j].Text;110
}111
}112
bdt.Rows.Add(bdr);113
114
}115

116
adr["item"]=bds.GetXml();//将item子集以XML存储表现形式格式化存入父表的item项117
ads.Tables[0].Rows.Add(adr);118
ads.WriteXml(Server.MapPath("\\xml\\xml\\query.xml"));119
Session["ads"]=ads;120
Response.Redirect("query_a.aspx");121
}122
}123
}124

1

<%
@ Page language="c#" Codebehind="query_a.aspx.cs" AutoEventWireup="false" Inherits="XML.query_a" %>2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >3
<HTML>4
<HEAD>5
<title>query_a</title>6
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">7
<meta name="CODE_LANGUAGE" Content="C#">8
<meta name="vs_defaultClientScript" content="JavaScript">9
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">10
</HEAD>11
<body MS_POSITIONING="GridLayout">12
<form id="Form1" method="post" runat="server">13
<FONT face="宋体">14
<asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 48px; POSITION: absolute; TOP: 72px" runat="server"15
BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" BackColor="White" CellPadding="3"16
AutoGenerateColumns="False" Width="536px">17
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#669999"></SelectedItemStyle>18
<ItemStyle ForeColor="#000066"></ItemStyle>19
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#006699"></HeaderStyle>20
<FooterStyle ForeColor="#000066" BackColor="White"></FooterStyle>21
<Columns>22
<asp:BoundColumn DataField="id" HeaderText="调查ID"></asp:BoundColumn>23
<asp:BoundColumn DataField="name" HeaderText="姓名"></asp:BoundColumn>24
<asp:BoundColumn DataField="email" HeaderText="邮箱"></asp:BoundColumn>25
<asp:HyperLinkColumn Text="查看详细" DataNavigateUrlField="id" DataNavigateUrlFormatString="query_b.aspx?id={0}"26
HeaderText="查看详细"></asp:HyperLinkColumn>27
</Columns>28
<PagerStyle HorizontalAlign="Left" ForeColor="#000066" BackColor="White" Mode="NumericPages"></PagerStyle>29
</asp:DataGrid>30
<asp:Label id="Label1" style="Z-INDEX: 102; LEFT: 232px; POSITION: absolute; TOP: 16px" runat="server"31
BorderWidth="2px" BorderStyle="Ridge" Width="136px" ForeColor="Red" Font-Bold="True" Font-Size="X-Large">答卷列表</asp:Label></FONT>32
</form>33
</body>34
</HTML>35

1
using System;2
using System.Collections;3
using System.ComponentModel;4
using System.Data;5
using System.Drawing;6
using System.Web;7
using System.Web.SessionState;8
using System.Web.UI;9
using System.Web.UI.WebControls;10
using System.Web.UI.HtmlControls;11

12
namespace XML13


{14

/**//// <summary>15
/// query 的摘要说明。16
/// 要转载的朋友请写明出处 田洪川,洪川医药-www.hc115.com17
/// </summary>18
public class query_a : System.Web.UI.Page19

{20
protected System.Web.UI.WebControls.Label Label1;21
protected System.Web.UI.WebControls.DataGrid DataGrid1;22
23
private void Page_Load(object sender, System.EventArgs e)24

{25
// 在此处放置用户代码以初始化页面26
if(Session["ads"]!=null)27

{//做这个判断是为了可以直接打开这个页,而不通过答卷来28
DataSet ds=(DataSet)Session["ads"];29
DataGrid1.DataSource=ds.Tables[0].DefaultView;30
DataGrid1.DataBind();31
}32
else33

{34
DataSet ds=new DataSet();35
ds.ReadXml(Server.MapPath("\\xml\\xml\\query.xml"));36
DataGrid1.DataSource=ds.Tables[0].DefaultView;37
DataGrid1.DataBind();38
}39
}40

41

Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码42
override protected void OnInit(EventArgs e)43

{44
//45
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。46
//47
InitializeComponent();48
base.OnInit(e);49
}50
51

/**//// <summary>52
/// 设计器支持所需的方法 - 不要使用代码编辑器修改53
/// 此方法的内容。54
/// </summary>55
private void InitializeComponent()56

{ 57
this.Load += new System.EventHandler(this.Page_Load);58

59
}60
#endregion61
}62
}63

1

<%
@ Page language="c#" Codebehind="query_b.aspx.cs" AutoEventWireup="false" Inherits="XML.query_b" %>2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >3
<HTML>4
<HEAD>5
<title>query_b</title>6
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">7
<meta name="CODE_LANGUAGE" Content="C#">8
<meta name="vs_defaultClientScript" content="JavaScript">9
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">10
</HEAD>11
<body MS_POSITIONING="GridLayout">12
<FONT face="宋体"></FONT>13
<form id="Form1" method="post" runat="server">14
<FONT face="宋体">15
<asp:Label id="Label1" style="Z-INDEX: 101; LEFT: 200px; POSITION: absolute; TOP: 8px" runat="server"16
ForeColor="Red" Font-Bold="True" Font-Size="X-Large" BorderStyle="Ridge" BorderWidth="2px"17
Width="208px">答卷详细信息</asp:Label>18
<asp:DataGrid id="DataGrid1" style="Z-INDEX: 102; LEFT: 16px; POSITION: absolute; TOP: 120px"19
runat="server" BorderStyle="None" BorderWidth="1px" BorderColor="#CC9966" BackColor="White"20
CellPadding="4" AutoGenerateColumns="False">21
<SelectedItemStyle Font-Bold="True" ForeColor="#663399" BackColor="#FFCC66"></SelectedItemStyle>22
<ItemStyle ForeColor="#330099" BackColor="White"></ItemStyle>23
<HeaderStyle Font-Bold="True" ForeColor="#FFFFCC" BackColor="#990000"></HeaderStyle>24
<FooterStyle ForeColor="#330099" BackColor="#FFFFCC"></FooterStyle>25
<Columns>26
<asp:BoundColumn DataField="qid" HeaderText="题号">27
<HeaderStyle Width="50px"></HeaderStyle>28
</asp:BoundColumn>29
<asp:BoundColumn DataField="qtitle" HeaderText="题目"></asp:BoundColumn>30
<asp:BoundColumn DataField="ans" HeaderText="答案"></asp:BoundColumn>31
</Columns>32
<PagerStyle HorizontalAlign="Center" ForeColor="#330099" BackColor="#FFFFCC"></PagerStyle>33
</asp:DataGrid>34
<asp:Label id="Label2" style="Z-INDEX: 103; LEFT: 16px; POSITION: absolute; TOP: 72px" runat="server">答卷人:</asp:Label>35
<asp:Label id="lblname" style="Z-INDEX: 104; LEFT: 96px; POSITION: absolute; TOP: 72px" runat="server">Label</asp:Label>36
<asp:Label id="Label3" style="Z-INDEX: 105; LEFT: 232px; POSITION: absolute; TOP: 72px" runat="server">答卷ID:</asp:Label>37
<asp:Label id="lblid" style="Z-INDEX: 106; LEFT: 312px; POSITION: absolute; TOP: 72px" runat="server">Label</asp:Label></FONT>38
</form>39
</body>40
</HTML>41

1
using System;2
using System.Collections;3
using System.ComponentModel;4
using System.Data;5
using System.Drawing;6
using System.Web;7
using System.Web.SessionState;8
using System.Web.UI;9
using System.Web.UI.WebControls;10
using System.Web.UI.HtmlControls;11
using System.IO;12
namespace XML13


{14

/**//// <summary>15
/// query 的摘要说明。16
/// 要转载的朋友请写明出处 田洪川,洪川医药-www.hc115.com17
/// </summary>18
public class query_b : System.Web.UI.Page19

{20
protected System.Web.UI.WebControls.DataGrid DataGrid1;21
protected System.Web.UI.WebControls.Label Label2;22
protected System.Web.UI.WebControls.Label lblname;23
protected System.Web.UI.WebControls.Label Label3;24
protected System.Web.UI.WebControls.Label lblid;25
protected System.Web.UI.WebControls.Label Label1;26
27
private void Page_Load(object sender, System.EventArgs e)28

{29
// //使用Get方式得到问卷ID30
// string qid=Request.QueryString["id"];//得到答卷者的ID31
// lblid.Text=qid;32
// //读出XML文件33
// DataSet ads=new DataSet();34
// ads.ReadXml(Server.MapPath("\\xml\\xml\\query.xml"));35
// //利用数组得出结果36
// DataRow[] arr=ads.Tables[0].Select("id="+qid+"");37
// lblname.Text=arr[0]["name"].ToString();38
// string setxml=arr[0]["item"].ToString();39
// //把setxml转化成dataset40
// StringReader sr=new StringReader(setxml);//这个使用了IO命名空间41
// DataSet bds=new DataSet("query");42
// bds.ReadXml(sr);43
// //执行数据绑定44
// this.DataGrid1.DataSource=bds.Tables[0].DefaultView;45
// this.DataGrid1.DataBind();46

/**//// <summary>47
/// 以上方法并非唯一,下面这个方法一样可以实现的,呵呵48
/// </summary>49
//使用Get方式得到问卷ID50
string qid=Request.QueryString["id"];//得到答卷者的ID51
lblid.Text=qid;52
//读出XML文件53
DataSet ads=new DataSet();54
ads.ReadXml(Server.MapPath("\\xml\\xml\\query.xml"));55
//通过DataView方法实现56
DataView dv=ads.Tables["query"].DefaultView;57
dv.RowFilter="id="+qid+"";//这也是筛选数据集中数据的一种好方法58
lblname.Text=dv[0]["name"].ToString();59
string setxml=dv[0]["item"].ToString();60
//把setxml转化成dataset61
StringReader sr=new StringReader(setxml);//这个使用了IO命名空间62
DataSet bds=new DataSet("query");63
bds.ReadXml(sr);64
//执行数据绑定65
this.DataGrid1.DataSource=bds.Tables[0].DefaultView;66
this.DataGrid1.DataBind();67

68
}69

70

Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码71
override protected void OnInit(EventArgs e)72

{73
//74
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。75
//76
InitializeComponent();77
base.OnInit(e);78
}79
80

/**//// <summary>81
/// 设计器支持所需的方法 - 不要使用代码编辑器修改82
/// 此方法的内容。83
/// </summary>84
private void InitializeComponent()85

{ 86
this.Load += new System.EventHandler(this.Page_Load);87

88
}89
#endregion90
}91
}92
