我创建了一个新的Web用户控件。这个控件有一个按钮。在此按钮的click事件中,我以这种方式引发事件:
public partial class SearchDate : UserControl, IPostBackEventHandler
{
private static readonly object ObjEvent = new object();
// delegates
public delegate void VoidDelegate();
// events
[Category("Action")]
[Description("Azionato quando si preme il cancella nel filtro data")]
public event VoidDelegate CancelSearchDate
{
add
{
Events.AddHandler(ObjEvent, value);
}
remove
{
Events.RemoveHandler(ObjEvent, value);
}
}
protected virtual void OnCancelSearchDate()
{
var cancelEvent = (EventHandler) Events[ObjEvent];
if (cancelEvent != null)
{
cancelEvent(this, new EventArgs());
}
}
protected void BtnSearchDateCancelClick(object sender, EventArgs e)
{
OnCancelSearchDate();
}
protected void Page_Load(object sender, EventArgs e)
{
}
public void RaisePostBackEvent(string eventArgument)
{
OnCancelSearchDate();
}
}
我创建了一个委托,一个事件,并在点击按钮时将其抬起。
在托管此控件的另一个网页表单中,我以这种方式为此活动添加了处理程序:
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
return;
InitDateFilter(SearchDate);
}
protected void InitDateFilter(SearchDate searchDateControl)
{
searchDateControl.CancelSearchDate += SearchDateControlCancelSearchDate;
}
void SearchDateControlCancelSearchDate()
{
// other stuff
currUtente.FiltroData = null;
SaveSession();
}
当我点击按钮时,它会尝试评估该事件,但它始终为空。 我是asp.net webforms的新手,我觉得奇怪的是它效果不好。 我试图以更简单的方式举起活动(没有'添加''删除'在事件定义上),只是调用该事件,如果它不是' t null但行为是相同的。
由于
答案 0 :(得分:0)
尝试覆盖页面中的OnInit事件,并将处理程序添加到您的事件中。
像这样:protected override void OnInit(EventArgs e)
{
base.OnInit(e);
InitDateFilter(SearchDate);
}
如果有帮助请告诉我