2012-07-09 66 views
3

我想在asp.net上動態地創建一個按鈕,但我無法將事件添加到它。以下哪項錯誤或缺失?如何動態創建一個asp按鈕並向它添加事件

在此先感謝

$

Button btn2 = new Button(); 
    btn2.ID = "btnEdit"; 
    btn2.Text = "Edit Member"; 
    btn2.Click += new EventHandler(btnEdit_Click); 
    form1.Controls.Add(btn2); 

我也試過這樣:

$

Button btn2 = new Button(); 
    btn2.ID = "btnEdit"; 
    btn2.Text = "Edit Member"; 
    btn2.Attributes.Add("OnClick","btnEdit_Click); 
    form1.Controls.Add(btn2); 
+2

你得到一個異常還是什麼?你在哪裏創建按鈕,你是否在page_init/page_load的回發中重新創建它? – 2012-07-09 10:49:16

+0

該按鈕是在DropDownList中的SelectedItem改變時創建的。創建按鈕並將其添加到窗體上是沒有任何錯誤的。我在頁面上用我想要的css來獲取按鈕。但是,當我點擊它時,沒有任何移動,並且當我將一個斷點放到空白處時「 btnEdit_Click「,它沒有命中...... – 2012-07-09 10:55:43

回答

-1

我想你想在這裏混的服務器端和客戶端事件。

的HTML屬性OnClick是一個客戶端,當用戶點擊它會觸發一段JavaScript代碼 服務器事件OnClick當用戶點擊一個按鈕,它回發到服務器,它允許你發生的按鈕掛鉤功能(服務器端)進入該事件。

你在尋找服務器端還是客戶端?

要添加一個客戶端事件,你可以做

btn2.Attributes.Add("onclick","my_javascript_function"); 

要添加服務器端事件,你可以做

btn2.Click += new System.EventHandler(this.MyMethod); 

凡this.MyMethod是一種方法已經seutp來處理服務器端按鈕點擊。

+1

我正在尋找一個服務器端點擊事件。一個asp按鈕的屬性」OnClientClick「爲客戶端事件... – 2012-07-09 10:57:21

0

如果我是正確的,你在Page_Load創建按鈕。

如果是檢查回傳。

if(!postback) 
{ 
    create your buttons. 
} 
+0

夥計們我沒有問題創建按鈕並使其在頁面上保持穩定。在下拉列表中選擇項目時,我的按鈕只出現一次。問題是我無法在.cs文件中將事件註冊到按鈕。並注意到我的按鈕是一個asp:按鈕,所以「OnClick」屬性不適合客戶端... – 2012-07-09 12:06:37

0

創建用於將你的所有動態控制,如下

public void AddControls() 
{ 
    Button btn2 = new Button(); 
    btn2.ID = "btnEdit"; 
    btn2.Text = "Edit Member"; 
    btn2.Click += new EventHandler(btnEdit_Click); 
    form1.Controls.Add(btn2); 
} 

的方法,然後調用該方法中的Page_Load()事件&出的IsPostBack塊的側面,如下

protected void Page_Load(object sender, EventArgs e) 
{ 

    if (!IsPostBack) 
    { 

    } 
    AddControls(); 
} 

因爲對於動態添加控件的視圖狀態將不會加載Page_Lo ad() evnt。通過這個鏈接瞭解更多信息http://msdn.microsoft.com/en-us/library/vstudio/hbdfdyh7(v=vs.100).aspx

0

這應該做的伎倆:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Button b = new Button() { ID = "btnEdit", Text = "Edit Member" }; 
    b.Click += (sd, ev) => { 
     // Do whatever you want to be done on click here. 
     Button me = (Button)sd; // This creates a self-reference to this button, so you can get info like button ID, caption... and use, like this: 
     me.Text = "Yay! You clicked me!"; 
    }; 
    form1.Controls.Add(b); 
} 
相關問題