问题有点拗口。
问题背景:做一个小的网站,所有页面的左侧都有一个共同的列表,用一个datalist做成用户控件实现问题:想在datalist的selectedchang事件编码,将选择的item存入session,但在宿主页面中单击选择后,事件没有被执行。想解决这个问题,用事件冒泡机制能解决吗,还是必须参照如下解决
C:\Documents and Settings\trans\My Documents\为asp_net中的Web用户控件添加属性和事件 - 秋枫@Blog.htm
问题背景:做一个小的网站,所有页面的左侧都有一个共同的列表,用一个datalist做成用户控件实现问题:想在datalist的selectedchang事件编码,将选择的item存入session,但在宿主页面中单击选择后,事件没有被执行。想解决这个问题,用事件冒泡机制能解决吗,还是必须参照如下解决
C:\Documents and Settings\trans\My Documents\为asp_net中的Web用户控件添加属性和事件 - 秋枫@Blog.htm
为什么没有执行?最简单的办法就是调试首先看selectedchang在用户控件里响应了没有。事件冒泡一般在自定义控件的模板里才用到。
贴你的代码
谢谢:zhongkeruanjian(编程亮子),没有响应,asp.net机制决定了不会响应
ItemCommand ,在itemcommand里触发页面的事件
用户控件包含 Web 服务器控件时,可以在用户控件中编写代码来处理其子控件引发的事件。例如,如果用户控件包含一个 Button 控件,则可以在用户控件中为该按钮的 Click 事件创建处理程序。默认情况下,用户控件中的子控件引发的事件对于宿主页不可用。但是,可以为用户控件定义事件并引发这些事件,以便将子控件引发的事件通知宿主页。进行此操作的方式与定义任何类的事件一样。有关更多信息,请参见引发事件。参照http://msdn2.microsoft.com/zh-cn/library/fb3w5b53.aspx
但是,可以为用户控件定义事件并引发这些事件,以便将子控件引发的事件通知宿主页
宿主页
通过
ascx.cs
public delegate void clickhander( .... );
public event clickhandler click; 来引出事件
这里是用户控件中服务器控件的事件处理函数
protected void button1_click( .. )
{
if( click != null )
{
click( sender , e ); //这里引发页面的处理函数
}
}
宿主页
this.UserControl1.Click += new ...;
来处理