问个事件冒泡的问题!! 可能usercontrol没有阻止事件继续冒泡,所以到顶级了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请问一下如何阻止呀?对了不阻止的话,就会一直冒到顶级是不?对了还有一个冒泡问题,因为没分了,所以在这里一同问一下:我用的是帮助文档里的例子public class ChildControl : Button { [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")] protected override void OnClick(EventArgs e) { // base.OnClick(e); // Context.Response.Write("<br><br>ChildControl's OnClick called."); // Bubble this event to parent. RaiseBubbleEvent(this, e); } }页面上拖放上这个控件,页面重写:protected override bool OnBubbleEvent(object source, EventArgs e) { if (e is CommandEventArgs) { CommandEventArgs ce = (CommandEventArgs)e; if (ce.CommandName == "Click") { if (DCommand != null) { DCommand(source, e); } return true; } } return false; }跟踪时发现RaiseBubbleEvent执行了两遍,所以OnBubbleEvent也执行了两次,第一次时e不是CommandEventArgs这个类型的,每二次e才是这个类型的,请问一下为什么会执行两次? 数据绑定控件(Repeater、DataList 和 DataGrid)使用事件冒泡将子控件(在项目模板内)引发的命令事件公开为顶级事件。 跟踪时发现RaiseBubbleEvent执行了两遍,所以OnBubbleEvent也执行了两次,第一次时e不是CommandEventArgs这个类型的,每二次e才是这个类型的,请问一下为什么会执行两次?========Button/LinkButton/ImageButton 比较特殊,同时会出发 Command 和 Click 事件 protected void GridView1_SelectedIndexChanged(object sender, EventArgs e){RaiseBubbleEvent(sender, e); // 你要明白,此时你调用的 RaiseBubbleEvent 方法是 MyUserControl.RaiseBubbleEvent,并且 RaiseBubbleEvent 是将指定事件分配给调用方(这里是你的 MyUserControl)的父控件,而在这里你的 MyUserControl 的父控件是 .aspx }好好理解吧,其实答案是显然的 同上,这个很正常,一般来说应该是产生两次,rowcommand或者itemcommand会触发,不过你可以通过设置commandname来过滤,然后就是相应的gridview提供的事件 如何批量给button添加事件,且事件里头的变量是由button同级的控件传过来的 评估项目、 如何通过三个标签按钮将三个页面分别显示在同一个div区域里?代码如何写? 谢谢赐教 js遍历判断frame,急 传值问题; dataset输出到textbox的问题 asp.net如何实现在线积分? vs2003程序和vs2005程序并存的问题?请大家帮忙 asp.net与excel updatepanel里通过注册JS通过doPostBack 执行后台的代码,为什么页面不刷新 抓图 请教JS大虾....帮帮忙!!!!
我用的是帮助文档里的例子
public class ChildControl : Button
{
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
protected override void OnClick(EventArgs e)
{
// base.OnClick(e);
// Context.Response.Write("<br><br>ChildControl's OnClick called.");
// Bubble this event to parent.
RaiseBubbleEvent(this, e);
} }
页面上拖放上这个控件,页面重写:protected override bool OnBubbleEvent(object source, EventArgs e)
{
if (e is CommandEventArgs)
{
CommandEventArgs ce = (CommandEventArgs)e;
if (ce.CommandName == "Click")
{
if (DCommand != null)
{
DCommand(source, e); }
return true;
}
}
return false; }
跟踪时发现RaiseBubbleEvent执行了两遍,所以OnBubbleEvent也执行了两次,第一次时e不是CommandEventArgs这个类型的,每二次e才是这个类型的,请问一下为什么会执行两次?
{
RaiseBubbleEvent(sender, e); // 你要明白,此时你调用的 RaiseBubbleEvent 方法是 MyUserControl.RaiseBubbleEvent,并且 RaiseBubbleEvent 是将指定事件分配给调用方(这里是你的 MyUserControl)的父控件,而在这里你的 MyUserControl 的父控件是 .aspx
}好好理解吧,其实答案是显然的