在VS 2005后台代码中创建用户控件

有朋友在我的群里面问到VS 2005下编写ASP.NET用户控件,如何在后台代码中自动创建的问题,特写了一个小小的例子。

先看一下效果图:

上图为运行后,效果图。


上图为设计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">&nbsp;<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

然后创建一个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


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

以上代码文件基本实现了自定义用户控件的实现,以及在代码中创建一个用户控件。

需要说明的是几个关键的代码:

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、读取数据库的执行代码,我写在了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    }

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    }


好了,锡远就写到这里啦,关于自定义用户控件的实现就完成啦!随便在这里说一句,非常感谢湖南.NET俱乐部里面的兄弟姐妹们,因为有你们,所以我的生活更精彩,因为有你们,所以编程的生活不再孤单。 另外,希望陈老大的书快点写完,我好拿出去卖钱钱,然后买个微软的鼠标来,哈哈~~~

原文地址:https://www.cnblogs.com/lixyvip/p/500278.html