将按钮动态添加到面板

本文关键字:添加 按钮 动态 | 更新日期: 2023-09-27 18:25:40

我正在向面板动态添加RadButton。所以我创建了这样的按钮:

        RadButton btnAwesome = new RadButton();
        btnAwesome.AutoPostBack = true;
        btnAwesome.Text = "Click me...";
        btnAwesome.ID = "LinkButtonTest";
        btnAwesome.Click += new System.EventHandler(lnkbtnEditRecord_Click);

它应该调用这个方法onclick:

    protected void lnkbtnEditRecord_Click(object sender, EventArgs e)
    {
        salesEditPanel.Visible = true;
        resultPanel.Visible = false;
        zipPanel.Visible = false;
        ddlPanel.Visible = false;
        topPanel.Visible = false;
    }

它在面板上添加了按钮,但没有添加onclick。知道我缺少什么吗?

谢谢!

将按钮动态添加到面板

您需要在每次回发时运行该代码来初始化按钮,并且需要确保它在页面生命周期的早期运行。该代码在哪个页面事件中,它会在每次连续回发时运行吗?

这里的问题是由于回发的工作方式造成的——每次请求页面(无论是否回发)时,都会创建控件实例。一旦创建了控件并设置了其他页面属性,就会解析视图状态以设置控件的属性。然后创建并调度事件。

这里重要的是,这个"page"实例与您以前生成的实例不同——它是一个新实例,ASP.NET Web表单引擎为您设置了所有属性,就好像是一样的。但在这个实例中,您还没有创建btnAwesome,所以没有什么可以发送"点击事件"的!

为了改变这一点,您需要确保在Page_Load结束时,您想要激发事件的所有控件都已创建。因此,如果您希望它触发点击事件,则必须在从Page_Load返回之前重新创建btnAwesome并将其添加到面板中。