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,但行为是相同的。

谢谢

Asp中的事件.Net Webforms自定义用户控件

尝试在页面中覆盖OnInit事件并将处理程序添加到您的事件中。

:

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    InitDateFilter(SearchDate);
}

如果有帮助请告诉我