asp.net 动态添加控件不触发响应事件 10

在一个webpage中点击第一个按钮创建第二个按钮,可是点击第二按钮的时候不仅不触发它的响应时间,第二个按钮本身也会消失。求解释。代码如下:test.aspx:<%@Pa... 在一个webpage中点击第一个按钮创建第二个按钮,可是点击第二按钮的时候不仅不触发它的响应时间,第二个按钮本身也会消失。求解释。代码如下:

test.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test.aspx.cs" Inherits="WebApplication.test" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title></head><body> <form id="form1" runat="server"> <div> <asp:Panel ID="panel1" runat="server"></asp:Panel> </div> <div> <asp:Panel ID="panel2" runat="server"></asp:Panel> </div> </form></body></html>
test.aspx.cs:
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls; namespace WebApplication{ public partial class test : System.Web.UI.Page { int i = 1; protected void Page_Load(object sender, EventArgs e) { LinkButton btn1 = new LinkButton(); btn1.Text = "1"; btn1.Click += lb_Click1; panel1.Controls.Add(btn1); } void lb_Click1(object sender, EventArgs e) { LinkButton btn2 = new LinkButton(); btn2.Text = "2"; btn2.Click += new EventHandler(lb_Click2); panel2.Controls.Add(btn2); } void lb_Click2(object sender, EventArgs e) { Response.Write("<script>alert('Btn2 clicked')</script>"); } }}
展开
 我来答
lpc_007
2013-12-29 · TA获得超过135个赞
知道小有建树答主
回答量:192
采纳率:0%
帮助的人:200万
展开全部

你要知道服务器控件的button点击之后是先刷新页面再执行事件代码的,所以你现在就是第一次显示了btn1然后点击btn1之后生成了btn2再点击btn2时候页面就先刷新了又一次执行了pageload事件所以btn2的事件没有执行。

那么你可以换种方法来做

  LinkButton btn2 = new LinkButton();
        protected void Page_Load(object sender, EventArgs e)
        {
                LinkButton btn1 = new LinkButton();
                btn1.Text = "111111111111111111111111";
                btn1.Click += lb_Click1;
                panel1.Controls.Add(btn1);

                btn2.Text = "22222222222222222222222222";
                btn2.Click += new EventHandler(lb_Click2);
                btn2.Visible = false;
                panel2.Controls.Add(btn2);
        }
        void lb_Click1(object sender, EventArgs e)
        {
            btn2.Visible = true;

        }
        void lb_Click2(object sender, EventArgs e)
        {
            Response.Write("<script>alert('Btn2 clicked')</script>");
        }

再就是一般这种操作最好别从后台往前台输出控件,js来做还是很方便的

LEOxiaoD
2013-12-29
知道答主
回答量:7
采纳率:0%
帮助的人:7.7万
展开全部

回发的问题,楼主记得加上isPostBack的判断

if(!isPostBack)
{
    ...(your dynamic control`s declaration)
}

 http://zhidao.baidu.com/link?url=qwoSFQqffRY2DwSYYeUyEEHwFRfBXNWZGPZL2tbp13B2KHKUzwMzdkatNMPS7HUkpuhjQNCkdWQaFyo8Bs1dZK

关于postback的概念

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式