2016-06-14 27 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” –