2014-06-14 102 views
0

我實現了處理回發事件的自定義控件內射擊:自定義控件事件不是用戶控制

namespace CalendarControls 
{ 
    [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")] 
    public class CalendarPostback : WebControl, IPostBackEventHandler 
    { 
     public delegate void CalendarPostBackHandler(object sender, CalendarPostbackEventArgs e); 
     public event CalendarPostBackHandler CalendarPostBack; 

     public CalendarPostback() 
     { 

     } 

     #region IPostBackEventHandler Members 

     public void RaisePostBackEvent(string eventArgument) 
     { 
      string[] values = eventArgument.Split('|'); 

      CalendarPostbackEventArgs args = new CalendarPostbackEventArgs(); 
      args.EventType = (eEventType)Convert.ToInt32(values[0]); 

      if (args.EventType == eEventType.Insert) 
       args.EventDate = Convert.ToDateTime(values[1]); 
      else 
       args.EventId = Convert.ToInt32(values[1]); 

      if (CalendarPostBack != null) 
       CalendarPostBack(this, args); 
     } 

     #endregion 
    } 

    public class CalendarPostbackEventArgs : EventArgs 
    { 
     public CalendarPostbackEventArgs() 
     { 

     } 

     public eEventType EventType 
     { 
      get; 
      set; 
     } 

     public DateTime EventDate 
     { 
      get; 
      set; 
     } 

     public int? EventId 
     { 
      get; 
      set; 
     } 
    } 
} 

,我使用一個用戶控件此自定義控件,並稱之爲一個按鈕點擊我的用戶內用下面的JavaScript代碼:

function CallPostBack(eventArguments) { 
    __doPostBack('<%=ctl1.ClientID %>', eventArguments); 
} 

和我的HTML代碼在用戶控件:

<input type="button" value="Insert" onclick="CallPostBack('1|2014/06/12')" /> 
       <CalendarControls:CalendarPostback ID="ctl1" runat="server" ClientIDMode="Static" OnCalendarPostBack="ctl1_CalendarPostBack" /> 

但當我點擊我的按鈕,頁面回發發生但ctl1_CalendarPostBack事件沒有被解僱。我也必須說,我直接添加用戶控件到aspx頁面(不是動態的),我的aspx頁面有一個母版頁。 現在我有兩個問題:

  1. 我的代碼有什麼問題?如何解決這個問題?
  2. 如果我想將自定義控件添加到更新面板,並且想要發回異步帖子,我必須做什麼?

謝謝你, 最好的問候

回答

0

我發現問題了!當我們使用母版頁時,客戶端ID和控件的唯一ID不同,我們必須使用唯一ID代替客戶端ID:

​​