簡體   English   中英

Asp.Net Webforms自定義UserControl中的事件

[英]Events in Asp.Net Webforms custom UserControl

我創建了一個新的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();
    }

當我單擊該按鈕時,它會嘗試評估事件,但它始終為null。 我是asp.net網絡表單的新手,對我來說似乎很奇怪,它不能很好地工作。 我試圖以更簡單的方式引發事件(在事件定義上沒有'add'和'remove'),如果事件不為null但行為相同,則僅調用該事件。

謝謝

嘗試僅覆蓋Page中的OnInit事件,然后在其中將處理程序添加到您的事件中。

像這樣:

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

讓我知道是否有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM