在用户控件中自定义属性

有段时间没写什么博客了,一直忙于工作上的事情,白天上班,晚上上课(充电啊!~~)

想了想,还是学学微软的很多“讲师”,多写些入门级的技术文章吧,简单易懂,对很多朋友有帮助,看网上有关用户控件的文章比较少,就决定写一篇。

首先,在ASP.NET中,用户控件有几个概念必须弄清楚:

1、它的后缀名为.ASCX
2、它本身不能直接执行
3、它可以由用户自定义它的属性和事件

例如,我们先创建一个用户控件文件,名为 TxtData.ascx ,代码如下:

 1 ExpandedBlockStart.gif ContractedBlock.gif <% dot.gif @ Control Language="C#" AutoEventWireup="true" CodeFile="TxtData.ascx.cs" Inherits="TxtData"  %>
 2 None.gif < link  href ="CSS/CSS.css"  rel ="stylesheet"  type ="text/css"   />
 3 ExpandedBlockStart.gifContractedBlock.gif < style  type ="text/css" > dot.gif
 4InBlock.gif<!--
 5ExpandedSubBlockStart.gifContractedSubBlock.gif.STYLE1 {dot.gif}{
 6InBlock.gif    font-size: 14px;
 7InBlock.gif    font-weight: bold;
 8ExpandedSubBlockEnd.gif}

 9ExpandedBlockEnd.gif-->
10None.gif
</ style >
11 None.gif < table  width ="100%"  border ="0"  cellpadding ="0"  cellspacing ="0"  class ="LeftBorder" >
12 None.gif   < tr >
13 None.gif     < td  height ="30"  bgcolor ="#C4DBEE"   >
14 None.gif         < span  class ="STYLE1" >
15 None.gif             < asp:Label  ID ="ClassName"  runat ="server"  Text ="Label" ></ asp:Label >
16 None.gif         </ span >
17 None.gif         </ td >
18 None.gif   </ tr >
19 None.gif   < tr >
20 None.gif     < td >
21 None.gif < asp:DataList  ID ="DataList1"  runat ="server"  Font-Size ="Small"  Width ="100%"   >
22 None.gif     < ItemTemplate >
23 None.gif         < table  width =160  border ="0" >
24 None.gif               < TR  vAlign =top >
25 None.gif                 < TD  vAlign =top  align =middle  height =6  rowSpan =2 >
26 None.gif                 < IMG  height =7  src ="images/row.gif"  width =8  >  
27 None.gif                 </ TD >
28 None.gif                 < TD  align =left   height =12 >
29 ExpandedBlockStart.gifContractedBlock.gif                 <% dot.gif # GetTxtLink("TxtDataView.aspx?ID=" + (int)Eval("ID"), Eval("TxtTitle").ToString(), 10) %>
30 None.gif    
31 None.gif                 </ TD >
32 None.gif            </ TR >
33 None.gif
34 None.gif         </ table >
35 None.gif     </ ItemTemplate >
36 None.gif
37 None.gif </ asp:DataList >
38 None.gif     </ td >
39 None.gif   </ tr >
40 None.gif </ table >


上面在用户控件中,包含了个DataList控件,其实也你也完全可以用HTML语言的形式,利用TABL+ TR+TD的表格代码来实现,在其中加入数据绑定,就可以了,并且很轻松地就实现了,我们在这里利用DataList,是为了更好地利用.NET平台中一些控件,来充实程序的可扩展性和易用性。当然,你也可以使用Lable标签控件,使用VS中现成的控件,在实现面向对象编程上,是会带来方便的。

后台代码文件 TxtData.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  TxtData : System.Web.UI.UserControl
13 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
14InBlock.gif    private String _TxtClass = "";  //定义属性变量
15InBlock.gif
16InBlock.gif    public String TxtClass          //定义属性
17ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
18InBlock.gif
19InBlock.gif        get                     //get方法
20ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
21InBlock.gif            return _TxtClass;
22ExpandedSubBlockEnd.gif        }

23InBlock.gif        set                     //set方法
24ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
25InBlock.gif            _TxtClass = value;//取得前台页面中,用户设定的属性值
26InBlock.gif            LixyClass TxtSql = new LixyClass();
27InBlock.gif            this.DataList1.DataSource = TxtSql.ExecuteSqlRead("select * FROM TxtData where TxtClass='" + this.GetClassID(_TxtClass) + "' order by id desc");
28InBlock.gif            this.DataList1.DataBind();//按照用户设定的值,取出数据,并绑定到控件
29ExpandedSubBlockEnd.gif        }

30ExpandedSubBlockEnd.gif    }

31InBlock.gif
32InBlock.gif    protected void Page_Load(object sender, EventArgs e)
33ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
34InBlock.gif        if (!IsPostBack)
35ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
36InBlock.gif            this.ClassName.Text = this.TxtClass;//将控件表头名称赋值,值为用户设定的值
37ExpandedSubBlockEnd.gif        }

38ExpandedSubBlockEnd.gif    }

39InBlock.gif
40ExpandedSubBlockStart.gifContractedSubBlock.gif    /**//// <summary>
41InBlock.gif    /// 获取指定的字符串长度
42InBlock.gif    /// </summary>
43InBlock.gif    /// <param name="Url">文字链接</param>
44InBlock.gif    /// <param name="Title">主题字符串</param>
45InBlock.gif    /// <param name="Count">长度</param>
46ExpandedSubBlockEnd.gif    /// <returns></returns>

47InBlock.gif    protected static string GetTxtLink(string Url, string Title, int Count)
48ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
49InBlock.gif        return LixyClass.GetTxtLink(Url, Title, Count);
50ExpandedSubBlockEnd.gif    }

51ExpandedSubBlockStart.gifContractedSubBlock.gif    /**//// <summary>
52InBlock.gif    /// 获取类别
53InBlock.gif    /// </summary>
54InBlock.gif    /// <param name="ClassNameStr">类名</param>
55ExpandedSubBlockEnd.gif    /// <returns></returns>

56InBlock.gif    private string GetClassID(string ClassNameStr)
57ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
58InBlock.gif        LixyClass ReadData = new LixyClass();
59InBlock.gif        DataTable Txt = ReadData.ExecuteSqlRead("select ID from TxtClass where ClassName='" + ClassNameStr + "'");
60InBlock.gif        return Txt.Rows[0]["ID"].ToString();
61ExpandedSubBlockEnd.gif    }

62ExpandedBlockEnd.gif}

63 None.gif


然后在ASPX页面中如何使用呢?建一个 Test.aspx ,有两种办法在页面中插入控件:
1、是在后台代码页面中用代码动态创建控件(这个我前面已经写了一篇文章)
2、是直接拖入,从 解决方案资源管理器 中用鼠标直接将ASCX文件拖入到ASPX页面

拖入后,开发工具会自动在Test.aspx中创建如下代码:

<%@ Register Src="TxtData.ascx" TagName="TxtData" TagPrefix="uc8" %>
//引入用户控件


<uc8:txtdata id="TxtData3" runat="server" TxtClass="企业信息化"></uc8:txtdata>
//创建控件实例,控件对象名为TxtData3 
//TxtClass="企业信息化"  这里就是给我们用户控件中自己定义的TxtClass属性赋值

就写这么多了,希望对入门级别的朋友有用。
 
有人问我用的什么版本,我用的VS 2005 pro,下面是用户控件TxtData.ascx拖放到form页中的切图:
TxtData.gif

至于你的为什么没有,我就不知道啦,应该有的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值