老规矩,直接复制代码,我的代码通常都有非常繁冗的注释,为了养成看代码的习惯,你还是看吧,呵呵!!
具体功能就是每一个按纽上面写的,自己看了!
后台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
/// WebForm1 的摘要说明。
16
/// </summary>
17
public class WebForm1 : System.Web.UI.Page
18![]()
{
19
protected System.Web.UI.WebControls.Button btn2;
20
protected System.Web.UI.WebControls.Button btn1;
21
protected System.Web.UI.WebControls.DataGrid DataGrid1;
22
protected System.Web.UI.WebControls.DataGrid DataGrid2;
23
protected System.Web.UI.WebControls.DropDownList DropDownList1;
24
protected System.Web.UI.WebControls.Label Label1;
25
protected System.Web.UI.WebControls.Label Label2;
26
protected System.Web.UI.WebControls.Label Label3;
27
protected System.Web.UI.WebControls.Label Label4;
28
protected System.Web.UI.WebControls.TextBox TextBox1;
29
protected System.Web.UI.WebControls.Label Label5;
30
protected System.Web.UI.WebControls.TextBox TextBox2;
31
protected System.Web.UI.WebControls.Label Label6;
32
protected System.Web.UI.WebControls.Button btn3;
33
protected System.Web.UI.WebControls.Button btn4;
34
protected System.Web.UI.WebControls.Button btn5;
35
protected System.Web.UI.WebControls.Button btn6;
36
protected System.Web.UI.WebControls.Button btn7;
37
protected System.Web.UI.WebControls.Button btn8;
38
protected System.Web.UI.WebControls.Button Button1;
39
protected System.Web.UI.WebControls.Label Label7;
40
protected System.Web.UI.WebControls.TextBox TextBox3;
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.btn2.Click += new System.EventHandler(this.btn2_Click);
64
this.btn3.Click += new System.EventHandler(this.btn3_Click);
65
this.btn4.Click += new System.EventHandler(this.btn4_Click);
66
this.btn5.Click += new System.EventHandler(this.btn5_Click);
67
this.btn6.Click += new System.EventHandler(this.btn6_Click);
68
this.btn7.Click += new System.EventHandler(this.btn7_Click);
69
this.btn8.Click += new System.EventHandler(this.btn8_Click);
70
this.btn1.Click += new System.EventHandler(this.btn1_Click);
71
this.Load += new System.EventHandler(this.Page_Load);
72![]()
73
}
74
#endregion
75![]()
76
private void btn1_Click(object sender, System.EventArgs e)
77![]()
{//创建数据集
78
DataSet ds=new DataSet("mydata");//实例化一个名字叫 mydata 非类型化数据集
79
DataTable dtm=new DataTable("master");//new一个名字叫master(主表名)的数据表
80
DataTable dtc=new DataTable("cong");//new一个名字叫cong(从表名)的数据表
81
ds.Tables.Add(dtm);//把数据表添加到数据集中
82
ds.Tables.Add(dtc);//同上
83
Session["ds"]=ds;//把数据集存如session中,因为HTTP是无连接的,所以要在页面间传递最好就是求助与Session
84
}
85![]()
86
private void btn2_Click(object sender, System.EventArgs e)
87![]()
{//创建唯一键,这个必须是先创建了列后才可以用哈,当你激发了这个事件后,你添加两次行试下看
88
DataSet ds=(DataSet)Session["ds"];//从Session中取出数据集再交给新声明的对象中
89
System.Data.UniqueConstraint uc=new UniqueConstraint("ncqi",ds.Tables["master"].Columns["mid"]);//这行是关键,这里就是设置master表中的mid列是唯一键
90
ds.Tables["master"].Constraints.Add(uc);//利用Constraints将这个属性给加进表去
91
Session["ds"]=ds;//还给Session
92
}
93![]()
94
private void btn3_Click(object sender, System.EventArgs e)
95![]()
{//创建外键约束
96
DataSet ds=(DataSet)Session["ds"];
97
System.Data.ForeignKeyConstraint fkc=new ForeignKeyConstraint("fkc",ds.Tables["master"].Columns["mid"],ds.Tables["cong"].Columns["mlik"]);//使用这个方法指定cong表的mlik是外键约束的,外键表是master的mid列
98
ds.Tables["cong"].Constraints.Add(fkc);//利用Constraints将这个属性给加进表去
99
Session["ds"]=ds;//还给Session
100
}
101![]()
102
private void btn4_Click(object sender, System.EventArgs e)
103![]()
{//添加列数据
104
DataSet ds=(DataSet)Session["ds"];//从Session中取出数据集再交给新声明的对象中
105
ds.Tables["master"].Columns.Add("mid",typeof(int));//增加一列(列名为mid,类型为 int)的数据到master表中
106
ds.Tables["master"].Columns.Add("mvalue",typeof(string));
107
//添加从表列
108
ds.Tables["cong"].Columns.Add("mlik",typeof(int));
109
ds.Tables["cong"].Columns.Add("cid",typeof(int));
110
ds.Tables["cong"].Columns.Add("cvalue",typeof(string));
111
//修改表头
112
ds.Tables["master"].Columns["mid"].Caption="主表ID";//设置表master的mid列的表头名字为 主表ID
113
ds.Tables["master"].Columns["mvalue"].Caption="主表值";
114
//把数据集还得Session
115
Session["ds"]=ds;
116
fill();//重新绑定
117
}
118![]()
119
private void btn5_Click(object sender, System.EventArgs e)
120![]()
{//添加行数据
121
DataSet ds=(DataSet)Session["ds"];//从Session中取出
122
//为master表添加两行;
123
DataRow dr=ds.Tables["master"].NewRow();//声明一个新行的实例
124
dr["mid"]=1;//设置mid行的值,这个值是可以通过其他方式传近来的,这个你懂撒
125
dr["mvalue"]="第一";//设置mvalue行的值
126
ds.Tables["master"].Rows.Add(dr);//将这行添加到表中去
127
dr=ds.Tables["master"].NewRow();//再创建一行与上面构架一样(没有数据)的新行
128
dr["mid"]=2;
129
dr["mvalue"]="第二行";
130
ds.Tables["master"].Rows.Add(dr);
131
//我 cong 表添加新行
132
DataRow drc=ds.Tables["cong"].NewRow();
133
drc["mlik"]=1;
134
drc["cid"]=1;
135
drc["cvalue"]="从表第一";
136
ds.Tables["cong"].Rows.Add(drc);
137
Session["ds"]=ds;
138
fill();//重新绑定
139![]()
140
}
141![]()
142
private void btn6_Click(object sender, System.EventArgs e)
143![]()
{//修改主表ID,当你按了这个后,你会发现,cong表的MLIK键也变了
144
DataSet ds=(DataSet)Session["ds"];
145
ds.Tables["master"].Rows[0]["mid"]=3;//修改master表的第一行中mid列的值为 3
146
Session["ds"]=ds;
147
fill();//重新绑定
148
}
149![]()
150
private void btn7_Click(object sender, System.EventArgs e)
151![]()
{//求指定行列的值
152
DataSet ds=(DataSet)Session["ds"];
153
string tb=DropDownList1.SelectedValue.ToString();//得到选择的表名字
154
int r=Convert.ToInt32(TextBox1.Text);//得到行数
155
int c=Convert.ToInt32(TextBox2.Text);//得到列数
156
157![]()
158
object zhi=ds.Tables[""+tb+""].Rows[r][c];//一个object类型,的结果,
159
TextBox3.Text=zhi.ToString();//显示出来
160![]()
161![]()
162
}
163![]()
164
private void btn8_Click(object sender, System.EventArgs e)
165![]()
{//赋值当然是相反的,取值是把指定位置的值拿出来,赋值就是把指定的位置的值修改掉
166
DataSet ds=(DataSet)Session["ds"];
167
string tb=DropDownList1.SelectedValue.ToString();//得到选择的表名字
168
int r=Convert.ToInt32(TextBox1.Text);//得到行数
169
int c=Convert.ToInt32(TextBox2.Text);//得到列数
170
string zhi=TextBox3.Text.ToString();//和上面不同,只是把他的值直接指定,然后给下面
171
ds.Tables[""+tb+""].Rows[r][c]=zhi;
172![]()
173
fill();//赋值后要想看到结果,当然需要重新绑定了
174
}
175
176
private void fill()
177![]()
{//做了个绑定到DataGrid的绑定类,方便其多次使用
178
DataSet ds=(DataSet)Session["ds"];
179
this.DataGrid1.DataSource=ds.Tables["master"];
180
this.DataGrid2.DataSource=ds.Tables["cong"];
181
this.DataGrid1.DataBind();
182
this.DataGrid2.DataBind();
183
}
184
}
185
}
186
前台HTML代码
1![]()
<%
@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="XML.WebForm1" %>
2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
3
<HTML>
4
<HEAD>
5
<title>WebForm1</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:button id="btn2" style="Z-INDEX: 101; LEFT: 16px; POSITION: absolute; TOP: 216px" runat="server"
15
Width="176px" Text="创建唯一键"></asp:button><asp:button id="btn3" style="Z-INDEX: 102; LEFT: 16px; POSITION: absolute; TOP: 264px" runat="server"
16
Width="176px" Text="创建外键"></asp:button><asp:button id="btn4" style="Z-INDEX: 103; LEFT: 16px; POSITION: absolute; TOP: 120px" runat="server"
17
Width="176px" Text="添加列"></asp:button><asp:button id="btn5" style="Z-INDEX: 104; LEFT: 16px; POSITION: absolute; TOP: 168px" runat="server"
18
Width="176px" Text="添加行"></asp:button><asp:button id="btn6" style="Z-INDEX: 105; LEFT: 16px; POSITION: absolute; TOP: 312px" runat="server"
19
Width="176px" Text="修改主ID"></asp:button><asp:button id="btn7" style="Z-INDEX: 106; LEFT: 16px; POSITION: absolute; TOP: 360px" runat="server"
20
Width="176px" Text="求值"></asp:button><asp:button id="btn8" style="Z-INDEX: 107; LEFT: 16px; POSITION: absolute; TOP: 408px" runat="server"
21
Width="176px" Text="赋值"></asp:button><asp:button id="btn1" style="Z-INDEX: 108; LEFT: 16px; POSITION: absolute; TOP: 72px" runat="server"
22
Text="创建数据集和数据表"></asp:button><asp:datagrid id="DataGrid1" style="Z-INDEX: 109; LEFT: 232px; POSITION: absolute; TOP: 72px"
23
runat="server" Width="312px"></asp:datagrid><asp:datagrid id="DataGrid2" style="Z-INDEX: 110; LEFT: 232px; POSITION: absolute; TOP: 216px"
24
runat="server" Width="312px"></asp:datagrid><asp:dropdownlist id="DropDownList1" style="Z-INDEX: 111; LEFT: 272px; POSITION: absolute; TOP: 360px"
25
runat="server">
26
<asp:ListItem Value="master">主表</asp:ListItem>
27
<asp:ListItem Value="cong">从表</asp:ListItem>
28
</asp:dropdownlist><asp:label id="Label1" style="Z-INDEX: 112; LEFT: 208px; POSITION: absolute; TOP: 104px" runat="server"
29
Width="8px" Height="56px">主 表</asp:label><asp:label id="Label2" style="Z-INDEX: 113; LEFT: 208px; POSITION: absolute; TOP: 248px" runat="server"
30
Width="8px" Height="32px">从表</asp:label><asp:label id="Label3" style="Z-INDEX: 114; LEFT: 216px; POSITION: absolute; TOP: 360px" runat="server">表:</asp:label><asp:label id="Label4" style="Z-INDEX: 115; LEFT: 216px; POSITION: absolute; TOP: 400px" runat="server">行 Rows:</asp:label><asp:textbox id="TextBox1" style="Z-INDEX: 116; LEFT: 288px; POSITION: absolute; TOP: 400px"
31
runat="server" Width="40px"></asp:textbox><asp:label id="Label5" style="Z-INDEX: 117; LEFT: 352px; POSITION: absolute; TOP: 400px" runat="server">列 Column:</asp:label><asp:textbox id="TextBox2" style="Z-INDEX: 118; LEFT: 440px; POSITION: absolute; TOP: 400px"
32
runat="server" Width="48px"></asp:textbox><asp:label id="Label6" style="Z-INDEX: 119; LEFT: 512px; POSITION: absolute; TOP: 400px" runat="server">值:</asp:label><asp:textbox id="TextBox3" style="Z-INDEX: 120; LEFT: 544px; POSITION: absolute; TOP: 400px"
33
runat="server" Width="48px"></asp:textbox>
34
<asp:Button id="Button1" style="Z-INDEX: 121; LEFT: 16px; POSITION: absolute; TOP: 0px" runat="server"
35
Text="下面按纽请按顺序激发事件,否则不保证不会出错" Width="568px" Height="64px" BackColor="GreenYellow" BorderColor="Blue"
36
BorderStyle="Inset" BorderWidth="2px" Font-Bold="True" Font-Names="隶书" Font-Size="Large"
37
Font-Underline="True" ForeColor="Blue"></asp:Button>
38
<asp:Label id="Label7" style="Z-INDEX: 122; LEFT: 216px; POSITION: absolute; TOP: 432px" runat="server"
39
Width="360px" ForeColor="Red">行和列只能输入数字,切必须输入,因为是Demo,我懒的做验证控件了</asp:Label></FONT></form>
40
</body>
41
</HTML>
42
具体功能就是每一个按纽上面写的,自己看了!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42