2016-06-14 50 views
0
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title>Untitled Page</title> 
</head> 
<body> 
    <form id="form1" runat="server" visible="True"> 
     <asp:Panel ID="Panel2" runat="server" Height="29px" Width="950px" style="margin-left: 24px"> 
      <asp:Button ID="Button1" runat="server" OnClick="createtb" Text="+" /> 
     </asp:Panel> 
    </form> 
</body> 
</html> 

代碼:動態事件 - ASP.net(無法打印的 「Hello World」 消息)

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     Button bb = new Button(); 
     bb.Text = "Buttoninpageload"; 
     this.Panel2.Controls.Add(bb); 
     bb.Click += new EventHandler(bb_Click); 
    } 

    protected void bb_Click(object sender, EventArgs e) 
    { 
     Response.Write("IN BB_Click"); 
    } 

    protected void createtb(object sender, EventArgs e) 
    { 
     Button bt = new Button(); 
     bt.Text = "buttonincreatetb"; 

     this.Panel2.Controls.Add(bt); 

     bt.Click += new EventHandler(bt_Click); 
    } 

    public void bt_Click(object sender, EventArgs e) 
    { 
     Response.Write("Hello world"); 
    } 
} 

上動態創建ASP.net按鈕動態事件;我無法打印「Hello World」消息

請儘快提供一些解決方案。

+0

'Response.Write'不是你認爲的那樣。它是從服務器到客戶端的完整響應(請參閱https://msdn.microsoft.com/zh-cn/library/ms525585(v=vs.90).aspx)。確定您要在哪裏打印郵件,在那裏創建控件(例如標籤),然後使用您的郵件更新控件中的內容 – Jonathan

+0

按鈕單擊後標籤也不會顯示@Jonathan –

+0

我沒有看到標籤您的標記或代碼背後。請用標籤更新您的代碼。它應該工作;) – Jonathan

回答

0

問題是postback這裏。在您的createtb處理程序中,您正在創建按鈕並附加處理程序bt_Click,並在處理程序中寫入ResponseResponse.Write("Hello world");,但是當您單擊該按鈕時,會發送回發請求,並在page_load事件中創建另一個按鈕,其處理程序寫入Response.Write("IN BB_Click");。你應該改變你的Pahe_Load使用IsPostBack屬性如下。所以,只有在第一次加載頁面時纔會創建動態按鈕。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) { 
    Button bb = new Button(); 
    bb.Text = "Buttoninpageload"; 
    this.Panel2.Controls.Add(bb); 
    bb.Click += new EventHandler(bb_Click); 
    } 
} 
+0

但仍無法打印「Hello World」 –