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

摘要:
在asp.Net中,可以保护程序源代码的版权。本文描述了通过实现创建和使用自定义控件。该程序主要访问表Employees of Northwind(SqlServer2000中的内置数据库),并可以按升序或降序对表中的任何字段进行排序////publicclassDataSetClass:Control{privateSortTypepsortType;//表示表中的字段。

        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>

    publicenum SortType

    {

        EmployeeID,

        LastName,

        FirstName,

        Title,

        TitleOfCourtesy,

        BirthDate

    }

 

    ///<summary>

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

    ///</summary>

    publicenum SortStyle

    {

        desc,

        asc

    }

 

    ///<summary>

    /// DataSetClass 的摘要说明。

    ///</summary>

   

    publicclass DataSetClass:Control

    {

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

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

 

        public SortType sortType

        {

            get

            {

                returnthis.psortType;

            }

            set

            {

                this.psortType=value;

            }

        }

 

        public SortStyle sortStyle

        {

            get

            {

                returnthis.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="http://t.zoukankan.com/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 method="post" runat="server">

               <div align="center">

        <center>

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

                <tr>

                        <td class="smallred"><FONT face="宋体">

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

                </tr>

                <tr>

                        <td height="163">

                        <asp:DataGrid runat="server" 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>

    publicclass 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;

   

        privatevoid Page_Load(object sender, System.EventArgs e)

        {

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

            this.BindGrid();

        }

 

        privatevoid BindGrid()

        {

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

            this.DataGrid1.DataBind();

 

        }

 

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

        overrideprotectedvoid OnInit(EventArgs e)

        {

            //

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

            //

            InitializeComponent();

            base.OnInit(e);

        }

       

        ///<summary>

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

        /// 此方法的内容。

        ///</summary>

        privatevoid InitializeComponent()

        {   

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

 

        }

        #endregion

    }

}


原文:http://blog.csdn.net/ppluncle/archive/2004/07/09/38003.aspx

免责声明:文章转载自《ASP.NET中自定义控件的创建和使用(转)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Chrome 35个开发者工具的小技巧Linux下多网卡绑定bond及模式介绍下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

周末充电之WPF(四).多窗口之间操作

多窗口实例: 1.在多个窗口的情况下如何自定义指定要启动的窗口程序 1 <Application x:Class="toolbar.App" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x...

Java中System.setProperty()用法

Java中System.setProperty()用法   /* * 设置指定键对值的系统属性 * setProperty (String prop, String value); *  * 参数: * prop - 系统属性的名称。 * value - 系统属性的值。   *  * 返回: * 系统属性以前的值,如果没有以前的值,则返回 null。 *...

出现 "System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本" 错误的解决办法

出现 "System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本" 错误的解决办法 1.问题: 在Windows SP2 + VS2005 + Oracle 9i +IIS5.1环境中运行ASP.NET网页的时候出现如下错误: System.Data.OracleClient 需要 Oracle 客户端软...

Java 多重catch语句的具体使用介绍

某些情况,由单个代码段可能引起多个异常。处理这种情况,你可以定义两个或更多的catch子句,每个子句捕获一种类型的异常。当异常被引发时,每一个catch子句被依次检查,第一个匹配异常类型的子句执行。当一个catch语句执行以后,其他的子句被旁路,执行从try/catch块以后的代码开始继续。下面的例子设计了两种不同的异常类型:// Demonstrate...

WPF 下两种图片合成或加水印的方式

最近项目中应用多次应用了图片合成,为了今后方便特此记下。 在WPF下有两种图片合成的方式,一种还是用原来C#提供的GDI+方式,命名空间是System.Drawing 和 System.Drawing.Imaging,另一种是WPF中新添加的API,命名空间是 System.Windows.Media 和 System.Windows.Media.Imag...

Java Enum 枚举的简单使用

一、什么是枚举 值类型的一种特殊形式,它从 System.Enum 继承,并为基础基元类型的值提供备用名称。枚举类型有名称、基础类型和一组字段。基础类型必须是一个内置的有符号(或无符号)整数类型(如 Byte、Int32 或 UInt64)。字段是静态文本字段,其中的每一个字段都表示常数。所使用的语言给每个字段都分配一个基础类型的特定值。JDK1.5引入了...