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 ...
随机推荐
- Moses创建一个翻译系统的基本过程记录,以后会按照每个过程详细说明,并给出每个步骤的参数说明
软件需求: 首先你必须要有Moses(废话哈哈).然后要有GIZA++用作词对齐(traning-model.perl的时候会用到).IRSTLM产生语言模型 大致步骤: 大体的步骤如下: 准备Par ...
- SQL基础篇----select语句与排序问题
一.检索--输出所有的列 SELECT * FROM my_friends WHEREfirst_name = 'cake'; 知识点1 * 代表选择出所有的行-----(什么行呢?)就是first_ ...
- QPBOC扩展应用交易流程
1 Q扩展部分数据 增加3个DGI,分别为:A001,8020,9020 9103中增加DF60(9F38中),DF61 增加DF62,DF63 1.1 A001扩展应用配置 DGI 长度 值(示例 ...
- Android 解决图片大量下载:软引用必须懂4点
1.对象的强.软.弱和虚引用为了能更加灵活控制对象的生命周期,需要知道对象引用的4中级别,由高到低依次为 :强引用.软引用.弱引用和虚引用 备注: 这四种的区别: ⑴强引用(StrongReferen ...
- 基于Elasticsearch开发时的注意事项备忘
记录一些自己在Elasticsearch开发过程的琐碎知识点 1.使用ScriptFields时,需在yml配置文件中添加配置(script.disable_dynamic: false)开启动态脚本 ...
- MVC 中使用log4net 打印重复日志解决方法
最近在项目中引用log4net 来打印日志,会发现在同一时间点 打印重复记录: 详见图
- Java实现UDP之Echo客户端和服务端
Java实现UDP之Echo客户端和服务端 代码内容 采用UDP协议编写服务器端代码(端口任意) 编写客户机的代码访问该端口 客户机按行输入 服务器将收到的字符流和接收到的时间输出在服务器consol ...
- java 静态变量生命周期(类生命周期)
Static: 加载:java虚拟机在加载类的过程中为静态变量分配内存. 类变量:static变量在内存中只有一个,存放在方法区,属于类变量,被所有实例所共享 销毁:类被卸载时,静态变量被销毁,并释放 ...
- 用时间复杂度为n的方法找出水王
一.题目 三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖 数目超过了帖子数目 ...
- <<梦断代码>>读书笔记
从任何角度,Chandler项目开始时都是值得羡慕的.虽然是讲一个软件项目是如何失败的,不过里面有让我觉得很有意思. 失败了就进行反思:定位不能逆时代的潮流, 互联网的趋势不可逆转,人员沟通与合作是永 ...