繁体   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