先看一下效果图:
上图为运行后,效果图。
上图为设计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 代码如下:
1using System;
2using System.Data;
3using System.Configuration;
4using System.Collections;
5using System.Web;
6using System.Web.Security;
7using System.Web.UI;
8using System.Web.UI.WebControls;
9using System.Web.UI.WebControls.WebParts;
10using System.Web.UI.HtmlControls;
11
12public 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
2using System.Data;
3using System.Configuration;
4using System.Collections;
5using System.Web;
6using System.Web.Security;
7using System.Web.UI;
8using System.Web.UI.WebControls;
9using System.Web.UI.WebControls.WebParts;
10using System.Web.UI.HtmlControls;
11
12public 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 代码如下:
1using System;
2using System.Data;
3using System.Configuration;
4using System.Collections;
5using System.Web;
6using System.Web.Security;
7using System.Web.UI;
8using System.Web.UI.WebControls;
9using System.Web.UI.WebControls.WebParts;
10using System.Web.UI.HtmlControls;
11
12public 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
2using System.Data;
3using System.Configuration;
4using System.Collections;
5using System.Web;
6using System.Web.Security;
7using System.Web.UI;
8using System.Web.UI.WebControls;
9using System.Web.UI.WebControls.WebParts;
10using System.Web.UI.HtmlControls;
11
12public 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、将数据库中的数据读取出来,绑定到用户控件:
1public 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俱乐部里面的兄弟姐妹们,因为有你们,所以我的生活更精彩,因为有你们,所以编程的生活不再孤单。 另外,希望陈老大的书快点写完,我好拿出去卖钱钱,然后买个微软的鼠标来,哈哈~~~