zoukankan      html  css  js  c++  java
  • ASP.NET中自定义控件的创建和使用(转)

            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

        }

    }

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

  • 相关阅读:
    javascript设计模式小记
    静态iframe异步加载
    博客搬家分割线
    大数据学习之MapReduce篇
    IDEA 创建javaWeb以及Servlet
    数组定义 二维数组 数组遍历 查找
    201720181 JAVA实验站 第二周作业
    201720181 JAVA实验站 第三周作业
    201720181 团队名称 第一周 作业
    C#语言编写的基于directshow的音视频格式转换
  • 原文地址:https://www.cnblogs.com/dagon007/p/118163.html
Copyright © 2011-2022 走看看