Asp中的事件.Net Webforms自定义用户控件
本文关键字:自定义 用户 控件 Webforms Net 事件 Asp | 更新日期: 2023-09-27 17:54:27
我已经创建了一个新的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();
}
}
我已经创建了一个委托,一个事件并在点击按钮时引发它。
在另一个web表单中,在这个控件被托管的地方,我以这种方式为这个事件添加了一个处理程序:
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,它似乎对我来说很奇怪,它不能很好地工作。我试图以更简单的方式引发事件(没有'add'和'remove'对事件定义),只是调用事件,如果它不是null,但行为是相同的。
谢谢
尝试在页面中覆盖OnInit事件并将处理程序添加到您的事件中。
:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
InitDateFilter(SearchDate);
}
如果有帮助请告诉我