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 ...
随机推荐
- 浅谈DEs,AES
1. AES加密,相对比较简单,之前已经配置好工具类. package com.bbguoxue.poetry.util; import java.security.SecureRandom; imp ...
- js实现选项卡功能
1.css .liclick{ border: 1px black solid; background: #fff; float: left; width: 80px; height: 35px; l ...
- delphi常用函数过程
数据类型转化 1.1. 数值和字符串转化 Procedure Str(X [: Width [ : Decimals ]]; var S); 将数值X按照一定格式转化成字符串S.Wid ...
- C# 平时碰见的问题【5】
vs按F5启动调试,项目不会编译的解决办法 工具 -> 选项 -> 项目和解决方案 -> 运行时, 当项目过期(下拉框) -> 不要选[从不生成] 附英文版的:
- Python判断是否是数字(无法判断浮点数)(已解决)
s为字符串s.isalnum() 所有字符都是数字或者字母s.isalpha() 所有字符都是字母s.isdigit() 所有字符都是数字s.islower() 所有字符都是小写s.isupper() ...
- python2 编码问题详解
实例对比 定义 type str unicode print encode('utf8') decode('utf8') encode('unicode-escape') encode('string ...
- poj 3259 Wormholes
题目连接 http://poj.org/problem?id=3259 Wormholes Description While exploring his many farms, Farmer Joh ...
- sk_buff
在2.6.24之后这个结构体有了较大的变化,此处先说一说2.6.16版本的sk_buff,以及解释一些问题. 一. 先直观的看一下这个结构体~~~~~~~~~~~~~~~~~~~~~~在下面解释每个字 ...
- ASP.NET MVC掉过的坑_MVC初识及MVC应用程序结构
APS.Net MVC 浅谈[转] 来自MSDN 点击访问 MVC 理论结构 模型-视图-控制器 (MVC) 体系结构模式将应用程序分成三个主要组件:模型.视图和控制器. ASP.NET MVC 框架 ...
- [转]"error while loading shared libraries: xxx.so.x" 错误的原因和解决办法
[转]"error while loading shared libraries: xxx.so.x" 错误的原因和解决办法 http://blog.csdn.net/sahuso ...