• 在用户控件中自定义属性


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

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

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

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

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

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

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


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

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

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

    30    }

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

    38    }

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

    47    protected static string GetTxtLink(string Url, string Title, int Count)
    48    {
    49        return LixyClass.GetTxtLink(Url, Title, Count);
    50    }

    51    /// <summary>
    52    /// 获取类别
    53    /// </summary>
    54    /// <param name="ClassNameStr">类名</param>
    55    /// <returns></returns>

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

    62}

    63


    然后在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页中的切图:


    至于你的为什么没有,我就不知道啦,应该有的。
  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 P0404
    Java实现 蓝桥杯VIP 算法提高 P0404
    Java实现 蓝桥杯VIP 算法提高 P0404
    Java实现 蓝桥杯VIP 算法提高 P0404
    Java实现 蓝桥杯VIP 算法提高 P0404
    Java实现 蓝桥杯VIP 算法训练 排列问题
    Java实现 蓝桥杯VIP 算法训练 排列问题
    Java实现 蓝桥杯VIP 算法训练 排列问题
    Java实现 蓝桥杯VIP 算法训练 排列问题
    关于模态/非模态对话框不响应菜单的UPDATE_COMMAND_UI消息(对对WM_INITMENUPOPUP消息的处理)
  • 原文地址:https://www.cnblogs.com/lixyvip/p/573560.html
Copyright © 2020-2023  润新知