2014-03-27 47 views
1

我創建了一個新的Web用戶控件。這個控件有一個按鈕。這個按鈕的點擊事件中,我以這種方式引發事件:Asp.Net中的事件Webforms自定義UserControl

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和它似乎很奇怪,它不能很好地工作。 我試圖以更簡單的方式提出事件(沒有事件定義中的'添加'和'刪除'),只是調用事件,如果它不是null,但行爲是相同的。

感謝

回答

0

嘗試剛剛取代在頁面的的OnInit事件和處理程序添加到您的活動有。

這樣的:

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

讓我知道這是否有助於

+1

哇,太感謝你了,它工作得很好吧! –

+0

很高興聽到這個從你。我並不總是使用網絡表格,但我的很多同事都這麼做......所以很容易幫助你:) – Kreker

相關問題