先看一下效果图:
上图为运行后,效果图。
上图为设计ASCX文件时的切图。
上图为数据库表中的字段。
如何在VS 2005中创建工程文件就不说了,直接进入主题,在工程中新建一个用户控件;
CompanyProd.ascx 用户控件文件,代码:
1
<%
@ Control Language="C#" AutoEventWireup="true" CodeFile="CompanyProd.ascx.cs" Inherits="CompanyProd"
%>
2 < TABLE WIDTH =550 BORDER =0 CELLPADDING =0 CELLSPACING =0 >
3 < TR >
4 < TD COLSPAN =3 >
5 < IMG SRC ="images/CompanyProd_01.gif" WIDTH =550 HEIGHT =50 ALT ="" ></ TD >
6 </ TR >
7 < TR >
8 < TD width ="27" >
9 < IMG SRC ="images/CompanyProd_02.gif" WIDTH =27 HEIGHT =201 ALT ="" ></ TD >
10 < TD width ="494" valign ="top" background ="images/CompanyProd_03.gif" > < asp:DataList ID ="DataList1" runat ="server" Font-Size ="Small" ForeColor ="Gray" >
11 < ItemTemplate >
12 < table border ="0" cellpadding ="0" cellspacing ="1" bgcolor ="#999999" >
13 < tr >
14 < td bgcolor ="#FFFFFF" >< table width ="155" height ="130" border ="0" >
15 < tr >
16 < td height ="51" >< div align ="center" >< img src ="<%# DataBinder.Eval(Container.DataItem, " ProdPhoto").ToString()% > " width="80" height="80" /> </ div ></ td >
17 </ tr >
18 < tr >
19 < td style ="font-size: 12px; color: dimgray;" > 产品名称: <% # DataBinder.Eval(Container.DataItem, "ProdName").ToString() %> < br />< br />
20 详细介绍: < br /> <% # DataBinder.Eval(Container.DataItem, "ProdDetail").ToString() %>
21 < br /></ td >
22 </ tr >
23 </ table ></ td >
24 </ tr >
25 </ table >
26 </ ItemTemplate >
27 </ asp:DataList ></ TD >
28 < TD width ="29" >
29 < IMG SRC ="images/CompanyProd_04.gif" WIDTH =29 HEIGHT =201 ALT ="" ></ TD >
30 </ TR >
31 < TR >
32 < TD COLSPAN =3 >
33 < IMG SRC ="images/CompanyProd_05.gif" WIDTH =550 HEIGHT =34 ALT ="" ></ TD >
34 </ TR >
35 </ TABLE >
36
37
38
2 < TABLE WIDTH =550 BORDER =0 CELLPADDING =0 CELLSPACING =0 >
3 < TR >
4 < TD COLSPAN =3 >
5 < IMG SRC ="images/CompanyProd_01.gif" WIDTH =550 HEIGHT =50 ALT ="" ></ TD >
6 </ TR >
7 < TR >
8 < TD width ="27" >
9 < IMG SRC ="images/CompanyProd_02.gif" WIDTH =27 HEIGHT =201 ALT ="" ></ TD >
10 < TD width ="494" valign ="top" background ="images/CompanyProd_03.gif" > < asp:DataList ID ="DataList1" runat ="server" Font-Size ="Small" ForeColor ="Gray" >
11 < ItemTemplate >
12 < table border ="0" cellpadding ="0" cellspacing ="1" bgcolor ="#999999" >
13 < tr >
14 < td bgcolor ="#FFFFFF" >< table width ="155" height ="130" border ="0" >
15 < tr >
16 < td height ="51" >< div align ="center" >< img src ="<%# DataBinder.Eval(Container.DataItem, " ProdPhoto").ToString()% > " width="80" height="80" /> </ div ></ td >
17 </ tr >
18 < tr >
19 < td style ="font-size: 12px; color: dimgray;" > 产品名称: <% # DataBinder.Eval(Container.DataItem, "ProdName").ToString() %> < br />< br />
20 详细介绍: < br /> <% # DataBinder.Eval(Container.DataItem, "ProdDetail").ToString() %>
21 < br /></ td >
22 </ tr >
23 </ table ></ td >
24 </ tr >
25 </ table >
26 </ ItemTemplate >
27 </ asp:DataList ></ TD >
28 < TD width ="29" >
29 < IMG SRC ="images/CompanyProd_04.gif" WIDTH =29 HEIGHT =201 ALT ="" ></ TD >
30 </ TR >
31 < TR >
32 < TD COLSPAN =3 >
33 < IMG SRC ="images/CompanyProd_05.gif" WIDTH =550 HEIGHT =34 ALT ="" ></ TD >
34 </ TR >
35 </ TABLE >
36
37
38
CompanyProd.ascx.cs 代码如下:
1
using
System;
2 using System.Data;
3 using System.Configuration;
4 using System.Collections;
5 using System.Web;
6 using System.Web.Security;
7 using System.Web.UI;
8 using System.Web.UI.WebControls;
9 using System.Web.UI.WebControls.WebParts;
10 using System.Web.UI.HtmlControls;
11
12 public partial class CompanyProd : System.Web.UI.UserControl
13 {
14
15 private String _ProClass = "";
16
17 public String ProClass
18 {
19
20 get
21 {
22 return _ProClass;
23 }
24 set
25 {
26 this.ShowProd();
27 }
28 }
29
30
31 protected void Page_Load(object sender, EventArgs e)
32 {
33
34 }
35 private void ShowProd()
36 {
37 LixyClass CProd = new LixyClass();
38 this.DataList1.DataSource = CProd.ExecuteSqlRead("select * from Product order by ID desc");
39 this.DataList1.DataBind();
40
41 }
42}
43
2 using System.Data;
3 using System.Configuration;
4 using System.Collections;
5 using System.Web;
6 using System.Web.Security;
7 using System.Web.UI;
8 using System.Web.UI.WebControls;
9 using System.Web.UI.WebControls.WebParts;
10 using System.Web.UI.HtmlControls;
11
12 public partial class CompanyProd : System.Web.UI.UserControl
13 {
14
15 private String _ProClass = "";
16
17 public String ProClass
18 {
19
20 get
21 {
22 return _ProClass;
23 }
24 set
25 {
26 this.ShowProd();
27 }
28 }
29
30
31 protected void Page_Load(object sender, EventArgs e)
32 {
33
34 }
35 private void ShowProd()
36 {
37 LixyClass CProd = new LixyClass();
38 this.DataList1.DataSource = CProd.ExecuteSqlRead("select * from Product order by ID desc");
39 this.DataList1.DataBind();
40
41 }
42}
43
然后创建一个WEB窗体文件;
Default.aspx 代码如下:
1
<%
@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"
%>
2
3 <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
4
5 < html xmlns ="http://www.w3.org/1999/xhtml" >
6 < head runat ="server" >
7 < title > 无标题页 </ title >
8 </ head >
9 < body >
10 < form id ="form1" runat ="server" >
11 < div >
12
13 </ div >
14 </ form >
15 </ body >
16 </ html >
17
2
3 <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
4
5 < html xmlns ="http://www.w3.org/1999/xhtml" >
6 < head runat ="server" >
7 < title > 无标题页 </ title >
8 </ head >
9 < body >
10 < form id ="form1" runat ="server" >
11 < div >
12
13 </ div >
14 </ form >
15 </ body >
16 </ html >
17
Default.aspx.cs 代码如下:
1
using
System;
2 using System.Data;
3 using System.Configuration;
4 using System.Collections;
5 using System.Web;
6 using System.Web.Security;
7 using System.Web.UI;
8 using System.Web.UI.WebControls;
9 using System.Web.UI.WebControls.WebParts;
10 using System.Web.UI.HtmlControls;
11
12 public partial class _Default : System.Web.UI.Page
13 {
14 protected void Page_Load(object sender, EventArgs e)
15 {
16 Page.Controls.Add(new HtmlGenericControl("CP"));
17
18 Control c1 = LoadControl("CompanyProd.ascx");
19 ((CompanyProd)c1).ProClass = "All";
20 Page.Controls.Add(c1);
21 }
22
23
24
25
26
27}
28
2 using System.Data;
3 using System.Configuration;
4 using System.Collections;
5 using System.Web;
6 using System.Web.Security;
7 using System.Web.UI;
8 using System.Web.UI.WebControls;
9 using System.Web.UI.WebControls.WebParts;
10 using System.Web.UI.HtmlControls;
11
12 public partial class _Default : System.Web.UI.Page
13 {
14 protected void Page_Load(object sender, EventArgs e)
15 {
16 Page.Controls.Add(new HtmlGenericControl("CP"));
17
18 Control c1 = LoadControl("CompanyProd.ascx");
19 ((CompanyProd)c1).ProClass = "All";
20 Page.Controls.Add(c1);
21 }
22
23
24
25
26
27}
28
以上代码文件基本实现了自定义用户控件的实现,以及在代码中创建一个用户控件。
需要说明的是几个关键的代码:
1、将数据库中的数据读取出来,绑定到用户控件:
1
public
partial
class
CompanyProd : System.Web.UI.UserControl
2 {
3
4 private String _ProClass = "";
5
6 public String ProClass
7 {
8
9 get
10 {
11 return _ProClass;
12 }
13 set
14 {
15 this.ShowProd();
16 }
17 }
18
19
20 protected void Page_Load(object sender, EventArgs e)
21 {
22
23 }
24 private void ShowProd()
25 {
26 LixyClass CProd = new LixyClass();
27 this.DataList1.DataSource = CProd.ExecuteSqlRead("select * from Product order by ID desc");
28 this.DataList1.DataBind();
29
30 }
31}
2 {
3
4 private String _ProClass = "";
5
6 public String ProClass
7 {
8
9 get
10 {
11 return _ProClass;
12 }
13 set
14 {
15 this.ShowProd();
16 }
17 }
18
19
20 protected void Page_Load(object sender, EventArgs e)
21 {
22
23 }
24 private void ShowProd()
25 {
26 LixyClass CProd = new LixyClass();
27 this.DataList1.DataSource = CProd.ExecuteSqlRead("select * from Product order by ID desc");
28 this.DataList1.DataBind();
29
30 }
31}
2、读取数据库的执行代码,我写在了LixyClass类中,其ExecuteSqlRead函数代码如下:
1
public
DataTable ExecuteSqlRead(
string
SqlString)
2 {
3 OleDbCommand SqlCmd = new OleDbCommand();
4 SqlCmd.Connection = new OleDbConnection(ConnStr);
5 SqlCmd.CommandText = SqlString;
6 SqlCmd.CommandType = CommandType.Text;
7 OleDbDataAdapter SqlAd = new OleDbDataAdapter(SqlCmd);
8 DataSet Rs = new DataSet();
9 SqlAd.Fill(Rs);
10 return Rs.Tables[0];
11 }
2 {
3 OleDbCommand SqlCmd = new OleDbCommand();
4 SqlCmd.Connection = new OleDbConnection(ConnStr);
5 SqlCmd.CommandText = SqlString;
6 SqlCmd.CommandType = CommandType.Text;
7 OleDbDataAdapter SqlAd = new OleDbDataAdapter(SqlCmd);
8 DataSet Rs = new DataSet();
9 SqlAd.Fill(Rs);
10 return Rs.Tables[0];
11 }
3、在代码中进行创建用户控件在WEB FORM上:
1
protected
void
Page_Load(
object
sender, EventArgs e)
2 {
3 Page.Controls.Add(new HtmlGenericControl("CP"));
4
5 Control c1 = LoadControl("CompanyProd.ascx");
6 ((CompanyProd)c1).ProClass = "All";
7 Page.Controls.Add(c1);
8
9
10 }
2 {
3 Page.Controls.Add(new HtmlGenericControl("CP"));
4
5 Control c1 = LoadControl("CompanyProd.ascx");
6 ((CompanyProd)c1).ProClass = "All";
7 Page.Controls.Add(c1);
8
9
10 }
好了,锡远就写到这里啦,关于自定义用户控件的实现就完成啦!随便在这里说一句,非常感谢湖南.NET俱乐部里面的兄弟姐妹们,因为有你们,所以我的生活更精彩,因为有你们,所以编程的生活不再孤单。 另外,希望陈老大的书快点写完,我好拿出去卖钱钱,然后买个微软的鼠标来,哈哈~~~