2016-03-14 130 views
0

事件這是我的.aspx頁面中創建的onClick動態創建按鈕asp.net

<asp:Panel ID="Panel1" runat="server"> 
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> 
    <asp:Label ID="Label1" runat="server"></asp:Label> 
</asp:Panel>  

這是我的aspx.cs頁面

public partial class Test : System.Web.UI.Page 
{ 
    protected void Button1_Click(object sender, EventArgs e) 
    { 
     Button button2 = new Button(); 
     button2.Text = "Dynamic Button"; 
     button2.Click += new EventHandler(button2_Click); 
     Panel1.Controls.Add(button2); 
    } 

    void button2_Click(object sender, EventArgs e) 
    { 
     Label1.Text = "working"; 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
} 

「BUTTON2 「的點擊甚至不起作用。我也試過:

button2.Click += button2_Click; 

但是,這似乎並不工作。 如果我把代碼放在「Page_Load」函數中,它就可以工作。但是我想要點擊第一個按鈕(即Button1)將動態按鈕添加到頁面中。

如何使這項工作?

+0

我沒有你的問題的答案,但下面的文章給出了一個很好的動態創建控件的檢查列表:http://www.singingeels.com/Articles/Dynamically_Created_Controls_in_ASPNET.aspx – ConnorsFan

+0

我無法找到該帖子的解決方案:(... –

+0

該文章建議(在7點檢查列表)重新創建每個回發控件。考慮到您對Page_Load功能的評論,我認爲它會對您有用。 – ConnorsFan

回答

0

也許你可以同時與每個按鈕的定義的onclick屬性事件的aspx頁面的按鈕。只需將button2的可見性保持爲false,然後點擊button1即可將button2的可見性設置爲true。這不是一個通用的答案。這是一個快速週轉,以你的問題具體

0

可以佔位符添加到您的面板:

<asp:Panel ID="Panel1" runat="server"> 
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> 
    <asp:Label ID="Label1" runat="server"></asp:Label> 
    <asp:PlaceHolder ID="ph" runat="server" /> 
</asp:Panel> 

並插入它的按鈕,確保它在每次回發重建:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    CreateDynamicButton(); 
    ViewState.Add("Button2", "Yes"); 
} 

protected void CreateDynamicButton() 
{ 
    Button button2 = new Button(); 
    button2.ID = "button2"; 
    button2.Text = "Dynamic Button"; 
    button2.Click += new EventHandler(button2_Click); 
    ph.Controls.Clear(); 
    ph.Controls.Add(button2); 
} 

protected override void CreateChildControls() 
{ 
    base.CreateChildControls(); 
    if (ViewState("Button2") == "Yes") 
    { 
     CreateDynamicButton(); 
    } 
} 

void button2_Click(object sender, EventArgs e) 
{ 
    Label1.Text = "working"; 
}