ASP.NET中自定义控件的创建和使用

原创 2004年07月09日 17:01:00

ASP.NET中自定义控件的创建和使用<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

       asp.net中创建和使用自定义控件为我们编写程序带来了灵活性,并且能够保护程序源码的版权。其思想是:建立一个cs文件,在该文件中创建的控件必须继承System.Web.UI.Control类,可以为控件创建属性、方法和事件。然后编译成为程序集,放到Bin目录下,剩下的就是如何使用了。

 

    本文通过一个实倒对自定义控件的创建和使用进行说明。程序主要实现了对SqlServer2000中的一个内置数据库Northwind的表Employees进行访问,可以对该表中的任意字段进行升序或降序排列。

 

    以下是详细的创建过程:

   

1、  创建一个DataSetClass.cs类文件,并输入如下内容:

using System;

using System.Web;

using System.Web.UI;

using System.Data;

using System.Data.SqlClient;

using System.Reflection;

 

[assembly: AssemblyTitle("获取数据的WEB控件")]

[assembly: AssemblyDescription("可以对返回的数据进行任意排序")]

[assembly: AssemblyConfiguration("无配置")]

[assembly: AssemblyCompany("ACCP")]

[assembly: AssemblyProduct("DATASETCLASS")]

[assembly: AssemblyCopyright("李赞红")]

[assembly: AssemblyTrademark("")]

[assembly: AssemblyCulture("")]    

[assembly:AssemblyVersion("1.1.33.222")]

 

namespace TeachShow.Charpter9.ReturnDataSet

{

    /// <summary>

    /// 要排序的字段

    /// </summary>

    public enum SortType

    {

        EmployeeID,

        LastName,

        FirstName,

        Title,

        TitleOfCourtesy,

        BirthDate

    }

 

    /// <summary>

    /// 排序方式,升或降序

    /// </summary>

    public enum SortStyle

    {

        desc,

        asc

    }

 

    /// <summary>

    /// DataSetClass 的摘要说明。

    /// </summary>

   

    public class DataSetClass:Control

    {

        private SortType psortType; //表示表中的字段。

        private SortStyle psortStyle; //表示排序了方式是升还是降。

 

        public SortType sortType

        {

            get

            {

                return this.psortType;

            }

            set

            {

                this.psortType=value;

            }

        }

 

        public SortStyle sortStyle

        {

            get

            {

                return this.psortStyle;

            }

            set

            {

                this.psortStyle=value;

            }

        }

 

        public DataSetClass()

        {

            //

            // TODO: 在此处添加构造函数逻辑

            //

            this.psortType=SortType.EmployeeID;

            this.psortStyle =SortStyle.desc;

        }

 

 

        /// <summary>

        /// 获取记录集

        /// </summary>

        /// <returns></returns>

        public DataSet GetData()

        {

            string strType=null;

            string strStyle=null;

            string sql;

 

            switch(psortType)

            {

                case SortType.EmployeeID:

                    strType="EmployeeID";

                    break;

                case SortType.BirthDate:

                    strType="BirthDate";

                    break;

                case SortType.FirstName:

                    strType="FirstName";

                    break;

                case SortType.LastName:

                    strType="LastName";

                    break;

                case SortType.Title:

                    strType="Title";

                    break;

                case SortType.TitleOfCourtesy:

                    strType="TitleOfCourtesy";

                    break;

                default:

                    strType="undefine";

                    break;

            }

 

            switch(psortStyle)

            {

                case SortStyle.asc:

                    strStyle="asc";

                    break;

                case SortStyle.desc:

                    strStyle="desc";

                    break;

                default:

                    strStyle="undefine";

                    break;

            }

 

            sql="select * from Employees order by "+ strType + " " + strStyle;

           

            SqlConnection con=new SqlConnection("server=accp-lzh;uid=sa;pwd=sasa;database=Northwind");

            SqlCommand cmd=con.CreateCommand();

            cmd.CommandType=CommandType.Text;

            cmd.CommandText=sql;

 

            SqlDataAdapter ada=new SqlDataAdapter();

            ada.SelectCommand=cmd;

            DataSet ds=new DataSet();

 

            con.Open();

            ada.Fill(ds,"Employees");

            con.Close();

 

            return ds;

        }

    }

}

 

2、  保存后编译该文件为程序集,编译命令为: csc /t:library /r:System.dll,System.Web.dll C:/Inetpub/wwwroot/TeachShow/Charpter9/ReturnDataSet/DataSetClass.cs。其中:C:/Inetpub/wwwroot/TeachShow/Charpter9/ReturnDataSet/DataSetClass.cs为文件所在的路径。如果编译成功,将生成一个DataSetClass.dll文件

 

3、  新建一个WEB窗体,将DataSetClass.dl加入到工具箱中。方法为:打开工具箱,找到WEB窗体选项卡,单击右键,选择“添加/删除项”,单击“浏览”按钮,找到DataSetClass.dll文件,确定后就自动加到选项卡中了。控件名称即类名:DataSetClass

 

4、  下面开始使用该控件:绘制一个两行一列的表格,上一行放一个DataSetClass,下一行放一个DataGrid控件用来显示数据。

 

5、  代码如下:

Test.aspx内容:

<%@ Register TagPrefix="cc2" Namespace="TeachShow.Charpter9.ReturnDataSet" Assembly="DataSetClass" %>

<%@ Page language="c#" Codebehind="Test.aspx.cs" AutoEventWireup="false" Inherits="TeachShow.Charpter9.ReturnDataSet.Test" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<HTML>

<HEAD>

<title>Test</title>

<LINK rel="stylesheet" type="text/css" href="../../Style.css">

<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">

<meta name="CODE_LANGUAGE" Content="C#">

<meta name="vs_defaultClientScript" content="JavaScript">

<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">

</HEAD>

<body MS_POSITIONING="GridLayout">

<form id="Form1" method="post" runat="server">

               <div align="center">

        <center>

                <table border="0" cellpadding="0" cellspacing="0" width="558" height="198">

                <tr>

                        <td width="558" height="35" class="smallred"><FONT face="宋体">

                                <cc2:DataSetClass id="DataSetClass1" runat="server" sortType="LastName" sortStyle="asc"></cc2:DataSetClass></FONT></td>

                </tr>

                <tr>

                        <td width="558" height="163">

                        <asp:DataGrid id="DataGrid1" runat="server" Width="542px" CssClass="smallBlack"></asp:DataGrid></td>

                </tr>

                </table>

        </center>

        </div>

</form>

</body>

</HTML>

 

Test.aspx.cs内容:

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

 

namespace TeachShow.Charpter9.ReturnDataSet

{

    /// <summary>

    /// Test 的摘要说明。

    /// </summary>

    public class Test : System.Web.UI.Page

    {

        protected System.Web.UI.WebControls.DataGrid DataGrid1;

        protected System.Web.UI.WebControls.DropDownList DropDownList1;

        protected System.Web.UI.WebControls.DropDownList DropDownList2;

        protected System.Web.UI.WebControls.Button Button1;

        protected TeachShow.Charpter9.ReturnDataSet.DataSetClass DataSetClass1;

   

        private void Page_Load(object sender, System.EventArgs e)

        {

            // 在此处放置用户代码以初始化页面

            this.BindGrid();

        }

 

        private void BindGrid()

        {

            this.DataGrid1.DataSource=this.DataSetClass1.GetData();

            this.DataGrid1.DataBind();

 

        }

 

        #region Web 窗体设计器生成的代码

        override protected void OnInit(EventArgs e)

        {

            //

           // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。

            //

            InitializeComponent();

            base.OnInit(e);

        }

       

        /// <summary>

        /// 设计器支持所需的方法 - 不要使用代码编辑器修改

        /// 此方法的内容。

        /// </summary>

        private void InitializeComponent()

        {   

            this.Load += new System.EventHandler(this.Page_Load);

 

        }

        #endregion

    }

}

ASP.NET中自定义控件的创建和使用

ASP.NET中自定义控件的创建和使用        在asp.net中创建和使用自定义控件为我们编写程序带来了灵活性,并且能够保护程序源码的版权。其思想是:建立一个cs文件,在该文件中创建的控件必须...
  • zr1982930
  • zr1982930
  • 2004年11月01日 14:38
  • 730

Android SQLite数据库创建和使用实战(一)

转载地址:http://blog.csdn.net/yanbober/article/details/20688273 Android SQLiteSQLiteOpenHelper数据库...
  • qq_20816947
  • qq_20816947
  • 2015年08月06日 11:05
  • 302

在Visual Studio中使用C++创建和使用LIB

什么是LIB库? 库是已经写好的,成熟的,可以复用的代码。本质上说来,库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。所谓的静态,是指的链接过程。让我们来看看将一个程序编译成可执行程...
  • thebirthgod
  • thebirthgod
  • 2015年03月11日 15:25
  • 212

怎样创建和读写共享内存?

 读写的时候怎样锁定? --------------------------------------------------------------- 在16位Windows中,有好几种方法可以共享数...
  • sky04
  • sky04
  • 2009年02月19日 18:06
  • 1846

c1xx : fatal error C1027: 创建和使用预编译头时的 /Ym 值不一致

今天用VS2010编译一个工程,突然报出 “c1xx : fatal error C1027: 创建和使用预编译头时的 /Ym 值不一致”这个错误,最后在网上找到解决方案,参见http://blog....
  • zhw_giser
  • zhw_giser
  • 2016年09月20日 00:13
  • 1623

【JAVA】32、对象的创建与使用

本篇介绍对象的创建与使用
  • omoiato
  • omoiato
  • 2016年03月07日 22:34
  • 815

创建和使用私有仓库

环境:Centos7.21. 修改 Docker 配置 客户端和仓库之间使用 https 协议,默认 docker push 只能使用 127.0.0.1,如果需要支持外部 push 到此仓库需要对...
  • u010472499
  • u010472499
  • 2017年12月28日 14:58
  • 38

创建ASP.Net自定义控件

   自定义服务器控件完全由开发人员自行设计开发,开发人员可自定义UI、功能、属性、方法、事件等特征,常见的自定义服务器控件分为4种:复合控件、验证控件、模板控件和数据绑定控件。(1)复合控件:该类控...
  • friend_yutian
  • friend_yutian
  • 2006年12月30日 15:34
  • 21957

Android中Sqlite的创建与使用

SQLite是一款轻量级的关系型数据库,它的运行速度很快,占用资源少,通常只需要几百K的内存就足够了,因而现在的主流移动设备都使用SQLite作为复杂数据的存储引擎。对于Android来说,系统内置了...
  • qq_35549248
  • qq_35549248
  • 2017年09月21日 13:45
  • 229

Cocoapods私有仓库的创建和使用

Cocoapods私有仓库的创建和使用注意两个十分重要的概念:配置仓库(spec repo)和 代码仓库(code repo),实际就是这两个仓库的创建。...
  • jone741852963
  • jone741852963
  • 2016年10月10日 17:51
  • 757
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET中自定义控件的创建和使用
举报原因:
原因补充:

(最多只允许输入30个字)