表dep:depid(标识主键),depname(学院名字)
表stu:stuid(标识主键),stuname(学生名字),studepid(学院id=表dep.depid)
前台:
1 <%@ Page language="c#" Codebehind="WebForm30.aspx.cs" AutoEventWireup="false" Inherits="csdn.WebForm30" %>
2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
3 <HTML>
4 <HEAD>
5 <title>WebForm30</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 <link href="css.css" rel="stylesheet" type="text/css">
10 <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
11 </HEAD>
12 <body MS_POSITIONING="GridLayout">
13 <form id="Form1" method="post" runat="server">
14 </form>
15 </body>
16 </HTML>
2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
3 <HTML>
4 <HEAD>
5 <title>WebForm30</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 <link href="css.css" rel="stylesheet" type="text/css">
10 <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
11 </HEAD>
12 <body MS_POSITIONING="GridLayout">
13 <form id="Form1" method="post" runat="server">
14 </form>
15 </body>
16 </HTML>
后台:
1 using System;
2 using System.Collections;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Data.SqlClient;
6 using System.Drawing;
7 using System.Web;
8 using System.Web.SessionState;
9 using System.Web.UI;
10 using System.Web.UI.WebControls;
11 using System.Web.UI.HtmlControls;
12
13 namespace csdn
14 {
15 /// <summary>
16 /// WebForm30 的摘要说明。
17 /// </summary>
18 public class WebForm30 : System.Web.UI.Page
19 {
20 DataGrid DataGrid1=new DataGrid();
21 private void Page_Load(object sender, System.EventArgs e)
22 {
23 // 在此处放置用户代码以初始化页面
24 CreateDataGrid();
25 }
26
27 protected void CreateDataGrid()
28 {
29 DataGrid1.AutoGenerateColumns=false;
30 DataGrid1.CssClass="border";
31 DataGrid1.BorderWidth=0;
32 DataGrid1.CellSpacing=1;
33 DataGrid1.CellPadding=5;
34 DataGrid1.ItemStyle.CssClass="item";
35 DataGrid1.HeaderStyle.CssClass="header";
36 DataGrid1.DataKeyField="stuid";
37 //以上设定DataGrid的样式
38 TemplateColumn tm=new TemplateColumn();
39 tm.ItemTemplate=new ColumnTemplate1();
40 tm.HeaderText="姓名";
41 DataGrid1.Columns.Add(tm);
42 //建立第一个模板列
43 TemplateColumn tm2=new TemplateColumn();
44 tm2.ItemTemplate=new ColumnTemplate2();
45 tm2.HeaderText="学院";
46 DataGrid1.Columns.Add(tm2);
47 //建立第二个模板列
48 ButtonColumn bc=new ButtonColumn();
49 bc.ButtonType=ButtonColumnType.PushButton;
50 bc.CommandName="del";
51 bc.Text="删除";
52 DataGrid1.Columns.Add(bc);
53 //建立删除按钮列
54 SetBind();
55 //填充数据
56 Page.Controls[1].Controls.Add(DataGrid1);
57 //给页面的form加入这个DataGrid1
58 }
59
60 protected void SetBind()
61 {
62 SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
63 SqlDataAdapter da=new SqlDataAdapter("select * from stu,dep where stu.studepid=dep.depid",conn);
64 DataSet ds=new DataSet();
65 da.Fill(ds,"table1");
66 this.DataGrid1.DataSource=ds.Tables["table1"];
67 this.DataGrid1.DataBind();
68
69 }
70
71 private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
72 {
73 //和上面连接给出的例子中的代码一样,给下拉框绑定数据,并且选择默认的
74 SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
75 SqlDataAdapter da=new SqlDataAdapter("select * from dep",conn);
76 DataSet ds=new DataSet();
77 da.Fill(ds,"table1");
78 if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
79 {
80 DropDownList ddl=(DropDownList)e.Item.FindControl("dep");
81 ddl.DataSource=ds.Tables["table1"];
82 ddl.DataTextField="depname";
83 ddl.DataValueField="depid";
84 ddl.DataBind();
85 ddl.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,"depid"))).Selected=true;
86 }
87 }
88
89 private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
90 {
91 if(e.CommandName=="del")
92 {
93 SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
94 SqlCommand comm=new SqlCommand("delete from stu where stuid=@id",conn);
95 SqlParameter parm1=new SqlParameter("@id",SqlDbType.Int);
96 parm1.Value=this.DataGrid1.DataKeys[e.Item.ItemIndex];
97 comm.Parameters.Add(parm1);
98 conn.Open();
99 comm.ExecuteNonQuery();
100 conn.Close();
101 SetBind();
102 }
103 }
104
105 #region Web 窗体设计器生成的代码
106 override protected void OnInit(EventArgs e)
107 {
108 //
109 // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
110 //
111 InitializeComponent();
112 base.OnInit(e);
113 }
114
115 /// <summary>
116 /// 设计器支持所需的方法 - 不要使用代码编辑器修改
117 /// 此方法的内容。
118 /// </summary>
119 private void InitializeComponent()
120 {
121 this.Load += new System.EventHandler(this.Page_Load);
122 this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
123 this.DataGrid1.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_ItemCommand);//这里的两个事件千万别忘记,因为DataGrid是后台创建的,这些事件需要自己来写上,vs.net也不会为你创建
124 }
125 #endregion
126 }
127
128 public class ColumnTemplate1 : ITemplate
129 {
130 //第一个模板列
131 public void InstantiateIn(Control container)
132 {
133 LiteralControl l = new LiteralControl();
134 l.DataBinding += new EventHandler(this.OnDataBinding);
135 //数据绑定
136 container.Controls.Add(l);
137 //为模板列加入LiteralControl
138 }
139
140 public void OnDataBinding(object sender, EventArgs e)
141 {
142 LiteralControl l = (LiteralControl) sender;//LiteralControl发送绑定请求
143 DataGridItem container = (DataGridItem) l.NamingContainer;
144 l.Text = ((DataRowView)container.DataItem)["stuname"].ToString();//绑定stuname字段
145 }
146 }
147
148 public class ColumnTemplate2 : ITemplate
149 {
150 //第二个模板列
151 public void InstantiateIn(Control container)
152 {
153 DropDownList dpl = new DropDownList();
154 dpl.ID="dep";
155 container.Controls.Add(dpl);
156 //加入一个id="dep"的下拉框,数据在DataGrid的ItemDataBound中绑定
157 }
158 }
159 }
2 using System.Collections;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Data.SqlClient;
6 using System.Drawing;
7 using System.Web;
8 using System.Web.SessionState;
9 using System.Web.UI;
10 using System.Web.UI.WebControls;
11 using System.Web.UI.HtmlControls;
12
13 namespace csdn
14 {
15 /// <summary>
16 /// WebForm30 的摘要说明。
17 /// </summary>
18 public class WebForm30 : System.Web.UI.Page
19 {
20 DataGrid DataGrid1=new DataGrid();
21 private void Page_Load(object sender, System.EventArgs e)
22 {
23 // 在此处放置用户代码以初始化页面
24 CreateDataGrid();
25 }
26
27 protected void CreateDataGrid()
28 {
29 DataGrid1.AutoGenerateColumns=false;
30 DataGrid1.CssClass="border";
31 DataGrid1.BorderWidth=0;
32 DataGrid1.CellSpacing=1;
33 DataGrid1.CellPadding=5;
34 DataGrid1.ItemStyle.CssClass="item";
35 DataGrid1.HeaderStyle.CssClass="header";
36 DataGrid1.DataKeyField="stuid";
37 //以上设定DataGrid的样式
38 TemplateColumn tm=new TemplateColumn();
39 tm.ItemTemplate=new ColumnTemplate1();
40 tm.HeaderText="姓名";
41 DataGrid1.Columns.Add(tm);
42 //建立第一个模板列
43 TemplateColumn tm2=new TemplateColumn();
44 tm2.ItemTemplate=new ColumnTemplate2();
45 tm2.HeaderText="学院";
46 DataGrid1.Columns.Add(tm2);
47 //建立第二个模板列
48 ButtonColumn bc=new ButtonColumn();
49 bc.ButtonType=ButtonColumnType.PushButton;
50 bc.CommandName="del";
51 bc.Text="删除";
52 DataGrid1.Columns.Add(bc);
53 //建立删除按钮列
54 SetBind();
55 //填充数据
56 Page.Controls[1].Controls.Add(DataGrid1);
57 //给页面的form加入这个DataGrid1
58 }
59
60 protected void SetBind()
61 {
62 SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
63 SqlDataAdapter da=new SqlDataAdapter("select * from stu,dep where stu.studepid=dep.depid",conn);
64 DataSet ds=new DataSet();
65 da.Fill(ds,"table1");
66 this.DataGrid1.DataSource=ds.Tables["table1"];
67 this.DataGrid1.DataBind();
68
69 }
70
71 private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
72 {
73 //和上面连接给出的例子中的代码一样,给下拉框绑定数据,并且选择默认的
74 SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
75 SqlDataAdapter da=new SqlDataAdapter("select * from dep",conn);
76 DataSet ds=new DataSet();
77 da.Fill(ds,"table1");
78 if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
79 {
80 DropDownList ddl=(DropDownList)e.Item.FindControl("dep");
81 ddl.DataSource=ds.Tables["table1"];
82 ddl.DataTextField="depname";
83 ddl.DataValueField="depid";
84 ddl.DataBind();
85 ddl.Items.FindByValue(Convert.ToString(DataBinder.Eval(e.Item.DataItem,"depid"))).Selected=true;
86 }
87 }
88
89 private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
90 {
91 if(e.CommandName=="del")
92 {
93 SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
94 SqlCommand comm=new SqlCommand("delete from stu where stuid=@id",conn);
95 SqlParameter parm1=new SqlParameter("@id",SqlDbType.Int);
96 parm1.Value=this.DataGrid1.DataKeys[e.Item.ItemIndex];
97 comm.Parameters.Add(parm1);
98 conn.Open();
99 comm.ExecuteNonQuery();
100 conn.Close();
101 SetBind();
102 }
103 }
104
105 #region Web 窗体设计器生成的代码
106 override protected void OnInit(EventArgs e)
107 {
108 //
109 // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
110 //
111 InitializeComponent();
112 base.OnInit(e);
113 }
114
115 /// <summary>
116 /// 设计器支持所需的方法 - 不要使用代码编辑器修改
117 /// 此方法的内容。
118 /// </summary>
119 private void InitializeComponent()
120 {
121 this.Load += new System.EventHandler(this.Page_Load);
122 this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
123 this.DataGrid1.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_ItemCommand);//这里的两个事件千万别忘记,因为DataGrid是后台创建的,这些事件需要自己来写上,vs.net也不会为你创建
124 }
125 #endregion
126 }
127
128 public class ColumnTemplate1 : ITemplate
129 {
130 //第一个模板列
131 public void InstantiateIn(Control container)
132 {
133 LiteralControl l = new LiteralControl();
134 l.DataBinding += new EventHandler(this.OnDataBinding);
135 //数据绑定
136 container.Controls.Add(l);
137 //为模板列加入LiteralControl
138 }
139
140 public void OnDataBinding(object sender, EventArgs e)
141 {
142 LiteralControl l = (LiteralControl) sender;//LiteralControl发送绑定请求
143 DataGridItem container = (DataGridItem) l.NamingContainer;
144 l.Text = ((DataRowView)container.DataItem)["stuname"].ToString();//绑定stuname字段
145 }
146 }
147
148 public class ColumnTemplate2 : ITemplate
149 {
150 //第二个模板列
151 public void InstantiateIn(Control container)
152 {
153 DropDownList dpl = new DropDownList();
154 dpl.ID="dep";
155 container.Controls.Add(dpl);
156 //加入一个id="dep"的下拉框,数据在DataGrid的ItemDataBound中绑定
157 }
158 }
159 }