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

时间:2014-03-27 09:22:46

标签: c# asp.net events webforms webusercontrol

我创建了一个新的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但行为是相同的。

由于

1 个答案:

答案 0 :(得分:0)

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

像这样:

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

如果有帮助请告诉我