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用户控件事件的定义和实践的更多相关文章
- 将ASP.NET用户控件转化为自定义控件
将ASP.NET用户控件转化为自定义控件 作者:Kevin Cheng (程建和) 最后修改时间:2006-03-14 概述:如何将ASP.NET用户控件移植为ASP.NET自定义控件 关键字:Asp ...
- ASP.Net用户控件的使用
一.概述: 与WEB窗体页相同,程序员可以使用任何文本编辑器创作用户控件,或者使用代码隐藏类开发用户控件.此外,与WEB窗体页一样,用户控件可以在第一次请求时被编译并存储在服务器内存中,从而缩短以后请 ...
- 035. asp.netWeb用户控件之四通过用户控件实现投票和结果分析
用户控件Vote.ascx代码 <%@ Control Language="C#" AutoEventWireup="true" CodeFile=&qu ...
- 033. asp.netWeb用户控件之二将页面转换成web控件和使用Web控件显示热点新闻
访问Web用户控件的属性 ASP.NET提供的各种服务器控件都有其自身的属性和方法,程序开发人员可以灵活地使用服务器控件中的属性和方法开发程序.在用户控件中,程序开发人员也可以自行定义各种属性和方法, ...
- ASP.NET用户控件操作ASPX页面
定义一个不含数据的事件处理方法 用户控件 public event EventHandler Click; protected void Button1_Click(object sender, Ev ...
- 039. asp.netWeb用户控件之七实现具有虚拟键盘的功能的用户控件
用户控件ascx代码: <%@ Control Language="C#" AutoEventWireup="true" CodeFile="K ...
- 038. asp.netWeb用户控件之六实现日期选择的用户控件
web用户控件的ascx代码: <%@ Control Language="C#" AutoEventWireup="true" CodeFile=&qu ...
- 037. asp.netWeb用户控件之五使用用户控件实现文件上传功能
fileUpload.ascx代码: <%@ Control Language="C#" AutoEventWireup="true" CodeFile= ...
- 036. asp.netWeb用户控件之五使用用户控件实现分页数据导航
UserDataPager.ascx用户控件代码: <%@ Control Language="C#" AutoEventWireup="true" Co ...
随机推荐
- 使用了Theme但是没有效果问题
最近在开发过程中使用了theme移植Preference并使用了一些android样式,但是在自定义的Theme修改了相关参数后却无法实现 可能有些朋友还不知道怎么用.这里也做个简要的使用方式说明. ...
- WIN10系统 Solidworks 2015 Toolbox插件提示 failed to create toolboxl ibrary object 解决方法
网上大部分都是说卸载一个更新程序,但是在WIN10中根本没有. 但是也可通过以下方法解决: 1.关闭SW程序及进程,用管理员命令打开CMD 2.打开并复制SW目录,默认为 C:\Program Fil ...
- 应聘复习基础笔记1:网络编程之TCP与UDP的优缺点,TCP三次握手、四次挥手、传输窗口控制、存在问题
重要性:必考 一.TCP与UDP的优缺点 ①TCP---传输控制协议,提供的是面向连接.可靠的字节流服务.当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据.TCP提供 ...
- 2.Knockout.Js(监控属性Observables)
前言 1.创建一个ViewModel <script type="text/javascript"> //1.创建一个ViewModel var myViewModel ...
- wpa_supplicant测试
Android系统中对于WIFI的设置集成到了“设置”中,其实跟手动设置差不多.这里介绍下如何手动连接WIFI,以方便以后调试WIFI. 第一步要做的就是要加载WIFI模块驱动了.当然如果你的WIFI ...
- php远程图片抓取存放到本地路径并生成缩略图
private function _getcontent($content) { $img_dir='../Public/Img/Ycimg'; //远程图片抓取存放 ...
- sharepoint 2010 误删除AD组用户不能访问
不小心误操作把ad中的组删除了,在sharepoint中是通过组给的权限,在ad中新建了一个同样名的组给了权限组下面的用户还是不能访问. 解决方法: 在sharepoint中把这组从网站集中删除,重新 ...
- Thread系列——Thread.Sleep(0)
转载自:http://www.cnblogs.com/ATually/archive/2010/10/21/1857261.html 线程这一概念,可以理解成进程中的一个小单元.这个单元是一个独立的执 ...
- FPGA控制HC595
/*****************************************************************************Copyright: 2013File na ...
- Asp.Net Web API开发微信后台
如果说用Asp.Net开发微信后台是非主流,那么Asp.Net Web API的微信后台绝对是不走寻常路. 需要说明的是,本人认为Asp.Net Web API在开发很多不同的请求方法的Restful ...