ASP.NET用户控件事件的定义和实践

假定用户控件(UserControl.ascx)中包含按钮控件  AButton,希望实现按  Button  按钮时,包含该用户控件的页面可以接收到事件。

UserControl.ascx.cs  中的处理: 
1. 定义  public  的事件委托,如  ClickEventHandler; 
2. 在  UserControl  类中声明事件,如  Click; 
3. 在  UserControl  类中定义引发事件的方法,如  OnClick()方法; 
4. 在  UserControl  类的相关方法中调用引发事件的方法,如在  Button_Click()中调用  OnClick()。

 下面这个例子是简单的响应点击事件

demo:buttonlist.aspx.cs

using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace stoneControls
{
    public delegate void ClickEventHandler(object sender, EventArgs e);
    public partial class buttonList : System.Web.UI.UserControl
    {
        public event ClickEventHandler Click;
        protected void OnClick(EventArgs e)
        {
            if (Click != null)
                Click(this, e);
        }

protected void lbnHome_OnClick(object sender, EventArgs e)
        {
            this.OnClick(e);
        }
    }
}

demo:buttonlist.aspx

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="buttonList.ascx.cs" Inherits="stoneControls.buttonList" %>
<table>
<tr>
   <td><asp:LinkButton ID="lbnHome" runat="Server" CommandName="HOME" Text="首页" OnClick="lbnHome_OnClick"></asp:LinkButton></td>
  </tr>
</table>

使用  ascx  控件

sample:buutonListTest .aspx

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <uc1:buttonList ID="ButtonList1" runat="server" >    
    </div>
    </form>
</body>
</html>

sample:buutonListTest .aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace stoneControls
{
    public partial class buutonListTest : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            this.ButtonList1.Click+=new ClickEventHandler(ButtonList1_Click);
        }

protected void ButtonList1_Click(object sender, EventArgs e)
        {

Response.Write("AAAAAAAAAAAAAAAAAAAAAA");
        }
    }
}

我们进一步的构造一个带数据参数的事件,利用.net  自带的  commandeventargs,当然可以自己构造一个,去继承  eventargs  就行了。

将上面的委托和事件改改,如下 :

public delegate void ClickCmandHandler(object sender,CommandEventArgs e);

public partial class buttonList : System.Web.UI.UserControl
    {
        public event ClickCmandHandler Click;
        protected void OnClick(CommandEventArgs e)
        {
            if (Click != null)
                Click(this, e);
        }

protected void lbnHome_OnClick(object sender,CommandEventArgs e)
        {
            this.OnClick(e);
        }
    }

页面的文件也相应做下修改:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="buttonList.ascx.cs" Inherits="stoneControls.buttonList" %>
<table>
<tr>
   <td>
   <asp:LinkButton ID="lbnHome" runat="Server" CommandName="HOME" Text="首页" OnCommand="lbnHome_OnClick">
   </asp:LinkButton>   
   </td>
   <td>
   <asp:LinkButton ID="lbnChannel" runat="Server" CommandName="CHANNEL" Text="频道" OnCommand="lbnHome_OnClick">
   </asp:LinkButton>   
   </td>
   <td>
   <asp:LinkButton ID="lbnColumn" runat="Server" CommandName="COLUMN" Text="栏目" OnCommand="lbnHome_OnClick">
   </asp:LinkButton>   
   </td>
   <td>
   <asp:LinkButton ID="lbnSoft" runat="Server" CommandName="DETAILS" Text="明细" OnCommand="lbnHome_OnClick">
   </asp:LinkButton>   
   </td>
  </tr>
</table>

调用控件改动下注册的参数就可以了。。

protected void Page_Load(object sender, EventArgs e)
        {
            this.ButtonList1.Click+=new ClickCmandHandler(ButtonList1_Click);
        }

protected void ButtonList1_Click(object sender,CommandEventArgs e)
        {
            if (e.CommandName == "DETAILS")
            {
            }
            if (e.CommandName == "COLUMN")
            {
            }
            if (e.CommandName == "CHANNEL")
            {
            }
            if (e.CommandName == "HOME")
            {
            }
        }

这样子一个简单的页面导航的控件基本出来,根据在  commandname  的不同跳转!!

ASP.NET用户控件事件的定义和实践

时间: 2024-10-31 14:40:34

ASP.NET用户控件事件的定义和实践的相关文章

asp.net 用户控件

转载自http://www.cnblogs.com/SkySoot/archive/2012/09/04/2670678.html 在 .NET 里,可以通过两种方式把自己的控件插入到 Web 窗体框架中: 用户控件:它是一小段页面,可以包括静态 HTML 代码和 Web 服务器控件.用户控件的好处是一旦创建了它,就可以在同一个 Web 应用程序的多个页面重用它.用户控件可以加入自己的属性,事件和方法. 自定义服务器控件:它是被编译的类,它通过编程生成自己的 HTML .服务器控件总是预编译到

ASP.NET~用户控件优化的登陆demo

对于用户控件的学习,现在只从以下几方面来理解一下: 1)何为用户控件? 以声明方式创建的服务器控件!相比一般控件来说,其最大的优势就是在同一个Web应用程序的多个页面可以重复使用,减少了其重复操作性,并且还可以加入自己的属性,事件和方法 2)用户控件特点?与Web窗体的相同点? 相同之处: 一个用户界面页 一个代码隐藏文件 异同之处: 用户控件:扩展名为.ASCX 用户控件中不包含<HTML><BODY><FORM> 所以两者之间是可以相互转换的. 用户控件的添加方法其

038. asp.netWeb用户控件之六实现日期选择的用户控件

web用户控件的ascx代码: <%@ Control Language="C#" AutoEventWireup="true" CodeFile="SelectDate.ascx.cs" Inherits="SelectDate" %> <script type="text/javascript" src="js/jquery.1.3.2.min.js"><

ASP.NET - 用户控件制作

首先添加用户控件: 在里面写上代码: <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="NewsCategory.ascx.cs" Inherits="News.Control.NewsCategory" %> <!--新闻分类--> <div id ="category" class ="Frm

Asp.net 用户控件和自定义控件注册

在ASPX页中注册用户控件的方法 <%@ Register Src="ListPicker.ascx" TagName="ListPicker" TagPrefix="uc1" %> 在Web.config中注册用户控件 <controls> <add tagPrefix="scottgu" src="~/Controls/Header.ascx" tagName="

asp.net用户控件和自定义控件的区别

一: Web 用户控件 1.易于创建 2.为使用可视化设计工具的使用者提供有限的支持 3. 每个应用程序中需要控件的一个单独副本 4. 不能添加到 Visual Studio 中的工具箱 5. 适用于静态布局 Web 自定义控件 1.难于创建 2. 为使用者提供完全的可视化设计工具支持 3. 仅在全局程序集缓存中需要控件的单个副本 4. 可以添加到 Visual Studio 中的工具箱 5. 适用于动态布局 二: 用户控件(UserControl) : *.ascx是指页面中加载的功能块 自定

(九)ASP.NET自定义用户控件(2)

http://www.cnblogs.com/SkySoot/archive/2012/09/04/2670678.html 用户控件 在 .NET 里,可以通过两种方式把自己的控件插入到 Web 窗体框架中: 用户控件:它是一小段页面,可以包括静态 HTML 代码和 Web 服务器控件.用户控件的好处是一旦创建了它,就可以在同一个 Web 应用程序的多个页面重用它.用户控件可以加入自己的属性,事件和方法. 自定义服务器控件:它是被编译的类,它通过编程生成自己的 HTML .服务器控件总是预编译

用户控件

1. 用户控件可以使开发人员能够根据应用程序的需求,方便的定义和编写控件. 2. 后缀名:.ascx 当用户访问页面时,是不能够被用户直接访问的. 3.用户控件中是没有<html><body>等元素的,主要是因为用户控件页面作为控件被引用到其他页面,而引用的页面已经有了这些元素标签 4.用户控件页面允许用户拖拽服务器控件,并编写相应的样式来实现用户控件,同时还支持事件.方法.委托等. 5. 在 .NET 里,可以通过两种方式把自己的控件插入到 Web 窗体框架中: 用户控件:它是一

ASP.NET ValidationSummary 控件

ASP.NET ValidationSummary 控件 Validation 服务器控件 定义和用法 ValidationSummary 控件用于在网页.消息框或在这两者中内联显示所有验证错误的摘要. 在该控件中显示的错误消息是由每个验证控件的 ErrorMessage 属性规定的.如果未设置验证控件的 ErrorMessage 属性,就不会为那个验证控件显示错误消息. 属性 属性 描述 DisplayMode 如何显示摘要.合法值有: BulletList List SingleParagr