ASP.NET 动态加载用户控件 通过委托响应onclick事件
来源:互联网 发布:淘宝凳子 编辑:程序博客网 时间:2024/05/29 13:44
动态加载用户控件的时候,用户控件中的button事件是未被注册的,所以我们可以通过增加事件委托来调用后台方法。
详细过程:(假定用户控件为Calculator.ascx.cs,动态添加用户控件的页面是Search.aspx)
Calculator.ascx.cs中的处理:
1. 定义public的事件委托,如clickeventhandler;2. 在Calculator类中声明事件,如click;
3. 在Calculator类中定义引发事件的方法,如onclick()方法;
4. 在Calculator类的相关方法中调用引发事件的方法,如在button_click()中调用onclick()。
5.假如要带参数可以自定义EventArgs(这里我定义了一个TextChangeEventArgs)
用户控件类中附加的代码:
public delegate void ClickEventHandler(object sender, TextChangeEventArgs e); public event ClickEventHandler Click; protected void OnClick(TextChangeEventArgs tc) { if (Click != null) Click(this, tc); } public void Button_Click(object sender, System.EventArgs e) { TextChangeEventArgs tc = new TextChangeEventArgs(); tc.Message = hf.Value; this.OnClick(tc); }
TextChangeEventArgs类中的代码:
public class TextChangeEventArgs : EventArgs{ private string message; public string Message { set { message = value; } get { return message; } }}
Search.aspx.cs文件中的处理(假定有多个用户控件):
1. initializecomponent()中增加事件处理程序,采用findcontrol方法找到usercontrol;
2. 定义事件处理方法,在该方法中处理usercontrol的事件,如usercontrol_clicked()。
private void InitializeComponent(int len) { this.Load += new System.EventHandler(this.Page_Load); for (int i = 0; i < len; i++) { Calculator uc = this.FindControl("CalculatorID"+i) as Calculator; TextChangeEventArgs tc = new TextChangeEventArgs (); uc.Click += new Calculator.ClickEventHandler(this.UserControl_Clicked); } } private void UserControl_Clicked(object sender, TextChangeEventArgs e) { //事件内容 }
阅读全文
0 0
- ASP.NET 动态加载用户控件 通过委托响应onclick事件
- Asp.net用户控件和委托事件
- ASP.net中动态加载用户控件
- ASP.NET中,动态加载用户控件
- asp.net后台动态加载用户控件
- asp.net动态加载ascx用户控件
- asp.net 动态加载用户控件
- asp.net动态加载用户控件
- 有效利用ASP.NET用户控件的事件委托
- asp.net 用户控件中的委托事件SelectedIndexChanged
- asp.net中动态加载用户控件的办法
- 在Asp.Net中动态加载用户控件
- Asp.net 2.0 动态加载其他子目录用户控件问题
- ASP.NET动态加载用户控件的页面生成过程
- ASP.NET中动态加载用户控件并传值
- ASP.NET动态加载用户控件的实现方法
- ASP.NET动态加载用户控件,关于后…
- ASP.NET - 动态用户控件,ViewState及事件
- 设计模式之单例模式与工厂模式
- Android 如何自定义一个ContentProvider
- Android View系列代码问题(一)
- URI和URL
- cmd可以链接mysql,但是mysql-front/navicat 1045错误解决方法
- ASP.NET 动态加载用户控件 通过委托响应onclick事件
- Disable Gradle 'offline mode' and sync project
- 10.14 考试 T1 计数
- hdu5573Binary Tree 思维构造
- POJ
- HDU 4858项目管理(STL容器)
- Python 生成随机图片验证码
- c语言中的移位运算符
- (java项目)servlet手动部署到tomcat的webapps中