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

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

先看一下效果图:
LixyUserCX03.JPG
上图为运行后,效果图。

LixyUserCX02.JPG
上图为设计ASCX文件时的切图。

LixyUserCX01.JPG
上图为数据库表中的字段。


如何在VS 2005中创建工程文件就不说了,直接进入主题,在工程中新建一个用户控件;

CompanyProd.ascx 用户控件文件,代码:

 1 ExpandedBlockStart.gif ContractedBlock.gif <% dot.gif @ Control Language="C#" AutoEventWireup="true" CodeFile="CompanyProd.ascx.cs" Inherits="CompanyProd"  %>
 2 None.gif < TABLE  WIDTH =550  BORDER =0  CELLPADDING =0  CELLSPACING =0 >
 3 None.gif     < TR >
 4 None.gif         < TD  COLSPAN =3 >
 5 None.gif             < IMG  SRC ="images/CompanyProd_01.gif"  WIDTH =550  HEIGHT =50  ALT ="" ></ TD >
 6 None.gif     </ TR >
 7 None.gif     < TR >
 8 None.gif         < TD  width ="27" >
 9 None.gif             < IMG  SRC ="images/CompanyProd_02.gif"  WIDTH =27  HEIGHT =201  ALT ="" ></ TD >
10 None.gif         < TD  width ="494"  valign ="top"  background ="images/CompanyProd_03.gif" > &nbsp; < asp:DataList  ID ="DataList1"  runat ="server"  Font-Size ="Small"  ForeColor ="Gray" >
11 None.gif                 < ItemTemplate >
12 None.gif                     < table  border ="0"  cellpadding ="0"  cellspacing ="1"  bgcolor ="#999999" >
13 None.gif                       < tr >
14 None.gif                         < td  bgcolor ="#FFFFFF" >< table  width ="155"  height ="130"  border ="0" >
15 None.gif                           < tr >
16 None.gif                             < td  height ="51" >< div  align ="center" >< img  src ="<%# DataBinder.Eval(Container.DataItem, " ProdPhoto").ToString()% > " width="80" height="80" /> </ div ></ td >
17 None.gif                           </ tr >
18 None.gif                           < tr >
19 ExpandedBlockStart.gifContractedBlock.gif                             < td  style ="font-size: 12px; color: dimgray;"   > 产品名称: <% dot.gif # DataBinder.Eval(Container.DataItem, "ProdName").ToString() %> < br  />< br  />
20 ExpandedBlockStart.gifContractedBlock.gif                              详细介绍: < br  /> <% dot.gif # DataBinder.Eval(Container.DataItem, "ProdDetail").ToString() %>
21 None.gif                               < br  /></ td >
22 None.gif                           </ tr >
23 None.gif                         </ table ></ td >
24 None.gif                       </ tr >
25 None.gif                     </ table >
26 None.gif                 </ ItemTemplate >
27 None.gif             </ asp:DataList ></ TD >
28 None.gif         < TD  width ="29" >
29 None.gif             < IMG  SRC ="images/CompanyProd_04.gif"  WIDTH =29  HEIGHT =201  ALT ="" ></ TD >
30 None.gif     </ TR >
31 None.gif     < TR >
32 None.gif         < TD  COLSPAN =3 >
33 None.gif             < IMG  SRC ="images/CompanyProd_05.gif"  WIDTH =550  HEIGHT =34  ALT ="" ></ TD >
34 None.gif     </ TR >
35 None.gif </ TABLE >
36 None.gif
37 None.gif                    
38 None.gif

CompanyProd.ascx.cs 代码如下:
 1 None.gif using  System;
 2 None.gif using  System.Data;
 3 None.gif using  System.Configuration;
 4 None.gif using  System.Collections;
 5 None.gif using  System.Web;
 6 None.gif using  System.Web.Security;
 7 None.gif using  System.Web.UI;
 8 None.gif using  System.Web.UI.WebControls;
 9 None.gif using  System.Web.UI.WebControls.WebParts;
10 None.gif using  System.Web.UI.HtmlControls;
11 None.gif
12 None.gif public  partial  class  CompanyProd : System.Web.UI.UserControl
13 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
14InBlock.gif    
15InBlock.gif    private String _ProClass = "";
16InBlock.gif
17InBlock.gif    public String ProClass
18ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
19InBlock.gif
20InBlock.gif        get
21ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
22InBlock.gif            return _ProClass;
23ExpandedSubBlockEnd.gif        }

24InBlock.gif        set
25ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
26InBlock.gif            this.ShowProd();
27ExpandedSubBlockEnd.gif        }

28ExpandedSubBlockEnd.gif    }

29InBlock.gif
30InBlock.gif
31InBlock.gif    protected void Page_Load(object sender, EventArgs e)
32ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
33InBlock.gif
34ExpandedSubBlockEnd.gif    }

35InBlock.gif    private void ShowProd()
36ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
37InBlock.gif        LixyClass CProd = new LixyClass();
38InBlock.gif        this.DataList1.DataSource = CProd.ExecuteSqlRead("select * from Product order by ID desc");
39InBlock.gif        this.DataList1.DataBind();
40InBlock.gif
41ExpandedSubBlockEnd.gif    }

42ExpandedBlockEnd.gif}

43 None.gif

然后创建一个WEB窗体文件;

Default.aspx 代码如下:
 1 ExpandedBlockStart.gif ContractedBlock.gif <% dot.gif @ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"  %>
 2 None.gif
 3 None.gif <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
 4 None.gif
 5 None.gif < html  xmlns ="http://www.w3.org/1999/xhtml"   >
 6 None.gif < head  runat ="server" >
 7 None.gif     < title > 无标题页 </ title >
 8 None.gif </ head >
 9 None.gif < body >
10 None.gif     < form  id ="form1"  runat ="server" >
11 None.gif     < div >
12 None.gif    
13 None.gif     </ div >
14 None.gif     </ form >
15 None.gif </ body >
16 None.gif </ html >
17 None.gif


Default.aspx.cs 代码如下:

 1 None.gif using  System;
 2 None.gif using  System.Data;
 3 None.gif using  System.Configuration;
 4 None.gif using  System.Collections;
 5 None.gif using  System.Web;
 6 None.gif using  System.Web.Security;
 7 None.gif using  System.Web.UI;
 8 None.gif using  System.Web.UI.WebControls;
 9 None.gif using  System.Web.UI.WebControls.WebParts;
10 None.gif using  System.Web.UI.HtmlControls;
11 None.gif
12 None.gif public  partial  class  _Default : System.Web.UI.Page
13 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
14InBlock.gif    protected void Page_Load(object sender, EventArgs e)
15ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
16InBlock.gif        Page.Controls.Add(new HtmlGenericControl("CP"));
17InBlock.gif
18InBlock.gif        Control c1 = LoadControl("CompanyProd.ascx");
19InBlock.gif        ((CompanyProd)c1).ProClass = "All";
20InBlock.gif        Page.Controls.Add(c1);
21ExpandedSubBlockEnd.gif    }

22InBlock.gif
23InBlock.gif
24InBlock.gif 
25InBlock.gif
26InBlock.gif
27ExpandedBlockEnd.gif}

28 None.gif

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

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

1、将数据库中的数据读取出来,绑定到用户控件:
 1 None.gif public  partial  class  CompanyProd : System.Web.UI.UserControl
 2 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
 3InBlock.gif    
 4InBlock.gif    private String _ProClass = "";
 5InBlock.gif
 6InBlock.gif    public String ProClass
 7ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 8InBlock.gif
 9InBlock.gif        get
10ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
11InBlock.gif            return _ProClass;
12ExpandedSubBlockEnd.gif        }

13InBlock.gif        set
14ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
15InBlock.gif            this.ShowProd();
16ExpandedSubBlockEnd.gif        }

17ExpandedSubBlockEnd.gif    }

18InBlock.gif
19InBlock.gif
20InBlock.gif    protected void Page_Load(object sender, EventArgs e)
21ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
22InBlock.gif
23ExpandedSubBlockEnd.gif    }

24InBlock.gif    private void ShowProd()
25ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
26InBlock.gif        LixyClass CProd = new LixyClass();
27InBlock.gif        this.DataList1.DataSource = CProd.ExecuteSqlRead("select * from Product order by ID desc");
28InBlock.gif        this.DataList1.DataBind();
29InBlock.gif
30ExpandedSubBlockEnd.gif    }

31ExpandedBlockEnd.gif}

2、读取数据库的执行代码,我写在了LixyClass类中,其ExecuteSqlRead函数代码如下:

 1 None.gif      public  DataTable ExecuteSqlRead( string  SqlString)
 2 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
 3InBlock.gif        OleDbCommand SqlCmd = new OleDbCommand();
 4InBlock.gif        SqlCmd.Connection = new OleDbConnection(ConnStr);
 5InBlock.gif        SqlCmd.CommandText = SqlString;
 6InBlock.gif        SqlCmd.CommandType = CommandType.Text;
 7InBlock.gif        OleDbDataAdapter SqlAd = new OleDbDataAdapter(SqlCmd);
 8InBlock.gif        DataSet Rs = new DataSet();
 9InBlock.gif        SqlAd.Fill(Rs);
10InBlock.gif        return Rs.Tables[0];
11ExpandedBlockEnd.gif    }

3、在代码中进行创建用户控件在WEB FORM上:

 1 None.gif      protected   void  Page_Load( object  sender, EventArgs e)
 2 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
 3InBlock.gif        Page.Controls.Add(new HtmlGenericControl("CP"));
 4InBlock.gif
 5InBlock.gif        Control c1 = LoadControl("CompanyProd.ascx");
 6InBlock.gif        ((CompanyProd)c1).ProClass = "All";
 7InBlock.gif        Page.Controls.Add(c1);
 8InBlock.gif
 9InBlock.gif
10ExpandedBlockEnd.gif    }


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值