收藏本站 收藏本站
积木网首页 - 软件测试 - 常用手册 - 站长工具 - 技术社区
积木学院 > 程序开发 > ASP > 正文

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

来源:互联摘选 日期:2007-04-21 20:51

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

  }

}

 

推荐阅读

 

热点信息

 
强悍的草根IT技术社区,这里应该有您想要的!
Copyright © 2010 Gimoo.Net. All Rights Rreserved  京ICP备05050695号