关于asp.net用户控件 事件丢失
来源:互联网 发布:阿里云解析有什么用 编辑:程序博客网 时间:2024/05/31 19:25
动态生成的控件在PostBack后需要重新生成,也可以考虑使用下面这个控件,但事件还是需要重新绑定的http://www.denisbauer.com/ASPNETControls/DynamicControlsPlaceholder.aspx
关于asp.net用户控件
1. 如何动态加载用户控件。经常会遇到这样的问题,需要根据输入的参数来决定是否或者是加载哪一个ascx,也就是ms所说的用编程的方式加载用户控件。 常用的做法是在aspx加一个PlaceHolder---VoteControlPH, private void LoadVoteControl() { Control voteControl = (UserControl)LoadControl("Vote.ascx"); voteControl.ID = "VotePanel"; VoteControlPH.Controls.Add(voteControl); }2.动态加载用户控件的时会出现事件丢失的现象。这是因为事件触发时,LoadVoteControl不被重新执行,如果在 private void Page_Load(object sender, System.EventArgs e) { if( !Page.IsPostBack ) {LoadVoteControl();}}则会发生这样的情况,正确的做法是将LoadVoteControl的调用放在IsPostBack 之外。对于这种情况,CSDN上的思归有详细的说明http://blog.joycode.com/saucer/posts/19456.aspxhttp://www.denisbauer.com/ASPNETControls/DynamicControlsPlaceholder.aspx3.如何给用户控件传递参数。常用做法 在ascx中定义属性,在aspx中创建ascx实例,并给属性赋值。这样做,在ascx中触发事件时,如果还要用到这些属性的值,就会发现属性值已经丢了。原因很简单,因为每个事件的触发都是一次向服务端提交的过程,提交后重新执行ascx.cs,属性值被初始化了。我用了一个比较笨的方法,用viewstate来存储这些值,不知道还有没有更好的方法?4.用户控件中调用aspx的事件和方法。要这样做的话,首先,需要在ascx中定义事件的委托说明,看下面的例子:ascx.cs: public delegate void myEventHandle(); public event myEventHandle myEvent; //VoteShowLT是个linkbutton private void VoteShowLT_Click(object sender, System.EventArgs e) { if(myEvent != null) // 可能控件在页面上没定义事件 myEvent(); return; }aspx.cs: private void InitializeComponent() {.... this.VotePanel.myEvent += new control.Vote.myEventHandle(this.BindData);.... }这样,点击ascx中的VoteShowLT就可以触发aspx中的BindData的方法了。5。用户控件支持嵌套调用,调用方法和apsx调用ascx一样。这不是丢不丢的问题,而是对HTTP的本质以及控件的生命周期是否了解的问题控件执行生命周期http://msdn.microsoft.com/library/default.asp?url=/library/chs/cpguide/html/cpconcontrolexecutionlifecycle.asp
- 关于asp.net用户控件 事件丢失
- asp.net用户控件事件处理
- Asp.net用户控件和委托事件
- Asp.net 用户控件添加自定义事件asp.net
- 关于asp.net中控件&控件事件的个人总结
- ASP.NET用户控件
- asp.net用户控件
- [ASP.NET开发系列]在用户控件中添加事件
- ASP.NET用户控件说明和添加事件
- asp.net页面装载用户控件时的事件顺序
- ASP.NET用户控件事件的定义和实践
- ASP.NET用户控件返回事件的方法
- ASP.NET 中页面获取所用用户控件的事件
- ASP.NET用户控件事件的定义和实践
- ASP.NET中如何为用户控件自定义事件?
- ASP.NET开发:在用户控件中添加事件
- ASP.NET用户控件说明和添加事件
- 有效利用ASP.NET用户控件的事件委托
- Color与ColorRef(int类型表示的颜色)的相互转换
- [C学习]指针与数组
- 面试趣事
- 一个使用 ANSI.SYS Escape Sequences 进行时间显示的例子
- My map in the Google
- 关于asp.net用户控件 事件丢失
- 留学别被惯性思维害了
- 一个使用 ANSI.SYS Escape Sequences 进行时间显示的例子
- 输入法
- 用人之道
- JAVA初始化问题1
- 这几天真的很热!!!!
- 解决Windows不能在本地计算机启动apache tomcat
- Rational 工具之 .NET 开发篇