该系统很简单,只有三个页,其实两个就可以,利用层隐藏,只是为了方便大家看,所以做了三个!

query.aspx页的HTML代码
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

query.aspx页的C#代码
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 XML
14

{
15
/**//// <summary>
16
/// query 的摘要说明。
17
/// 要转载的朋友请写明出处 田洪川,洪川医药-www.hc115.com
18
/// </summary>
19
public class query : System.Web.UI.Page
20
{
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
#endregion
68
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
else
83
{//否则就读取
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

query_a.aspx页的HTML代码
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

query_a.aspx的C#代码
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 XML
13

{
14
/**//// <summary>
15
/// query 的摘要说明。
16
/// 要转载的朋友请写明出处 田洪川,洪川医药-www.hc115.com
17
/// </summary>
18
public class query_a : System.Web.UI.Page
19
{
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
else
33
{
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
#endregion
61
}
62
}
63

query_b.aspx页的HTML代码
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

query_b.aspx页的C#代码
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 XML
13

{
14
/**//// <summary>
15
/// query 的摘要说明。
16
/// 要转载的朋友请写明出处 田洪川,洪川医药-www.hc115.com
17
/// </summary>
18
public class query_b : System.Web.UI.Page
19
{
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方式得到问卷ID
30
// string qid=Request.QueryString["id"];//得到答卷者的ID
31
// 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转化成dataset
40
// 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方式得到问卷ID
50
string qid=Request.QueryString["id"];//得到答卷者的ID
51
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转化成dataset
61
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
#endregion
90
}
91
}
92