2012-12-04 211 views
2

我是新來的自定義控件在asp.net中。附加圖片按鈕的點擊事件處理程序時遇到困難。我爲服務器控制編寫了以下代碼。如何爲自定義控件綁定事件處理程序

 ImageButton _imgbtn; 
     TextBox txtOutput; 
     Label _lblname; 
     public ImageButton searchBtn 
     { 
      get { return _imgbtn; } 
      set { _imgbtn = value; } 
     } 

     public Label lblName 
     { 
      get { return _lblname; } 
      set { _lblname = value; } 
     } 
     protected override void OnInit(EventArgs e) 
     { 
      txtOutput = new TextBox(); 
      txtOutput.Width = 180; 
      txtOutput.ID = "ResultOutput"; 
      txtOutput.Enabled = false; 
      Controls.Add(txtOutput); 

      searchBtn = new ImageButton(); 
      Controls.Add(searchBtn); 
      lblName = new Label(); 
      lblName.Text = ""; 
      Controls.Add(lblName); 

     } 
     protected override void RenderContents(HtmlTextWriter output) 
     { 
      //base.Render(output); 
      txtOutput.RenderControl(output); 
      searchBtn.RenderControl(output); 
      lblName.RenderControl(output); 
     } 

我將這個自定義控件添加到帶有註冊標記的.aspx頁面,如下所示。

<%@ Register TagPrefix="mycontrol" Namespace="MyControl" Assembly="MyControl" %> 

在aspx.cs文件我給下面的屬性值,

 CustomControl mycustctrol; 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!Page.IsPostBack) 
      { 
       mycustctrol = myCust as CustomControl; 
       mycustctrol.searchBtn.ImageUrl = "~/Images/searchicon.png"; 
       mycustctrol.searchBtn.OnClientClick = "GenerateClickEvent" 

      } 
     } 


public void GenerateClickEvent(object sender, EventArgs args) 
    { 
     mycustctrol.lblName.Text = "clicked"; 
    } 

運行此應用程序後,我收到以下錯誤。

'GenerateClickEvent' 未定義

如果我做了錯誤。我試圖宣佈一個事件,如public event EventHandler GenerateClickEvent;,但我無法走得更遠。你能告訴我怎麼做到這一點。

我也試圖與在.aspx頁面的JavaScript功能

function GenerateClickEvent() { 

     alert('clicked'); 
    } 

alert('clicked');不點火。

+0

GenerateClickEvent做你爲這個 –

+0

是定義jacascript。看到我編輯的問題一次 – Mihir

回答

2

你可能想是這樣的,你在做什麼是客戶點擊

mycustctrol.searchBtn.OnClientClick = "GenerateClickEvent()" 

和像這樣的事件點擊

mycustctrol.searchBtn.Click += new ImageClickEventHandler(GenerateClickEvent_Click); 

protected void GenerateClickEvent_Click(object sender, ImageClickEventArgs e) 
    { 
     mycustctrol.lblName.Text = "clicked"; 
    } 
+0

對於JavaScript它工作正常。但是對於事件它給出了以下錯誤。 '編譯時不能隱式地將類型'System.EventHandler'轉換爲'System.Web.UI.ImageClickEventHandler' – Mihir

+0

@Mhhir嘗試更新 –

+0

在if(!Page.IsPostBack)條件中綁定事件是否正確? – Mihir

相關問題