zoukankan      html  css  js  c++  java
  • 在用户控件中自定义属性

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

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

    首先,在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页中的切图:


    至于你的为什么没有,我就不知道啦,应该有的。
  • 相关阅读:
    javap -c 字节码含义
    redis --- lua 脚本实现原子操作
    感想
    AbstractAdvisingBeanPostProcessor---spring aop 处理器
    spring 自定义解析类
    protobuf3 语法解析
    Java设计模式之builder模式
    工厂和抽象工厂模式
    RESTful入门
    RocketMQ入门
  • 原文地址:https://www.cnblogs.com/lixyvip/p/573560.html
Copyright © 2011-2022 走看看