动态添加按钮到面板

时间:2012-02-23 17:42:31

标签: c# asp.net

我正在向Panel动态添加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;
    }

它添加了Panel按钮,但它没有添加onclick。知道我错过了什么吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

这里的问题是由于回发的工作方式 - 每次请求页面(回发与否)时,都会创建控件实例。创建控件并设置其他页面属性后,将解析视图状态以设置控件的属性。然后创建并分派事件。

这里重要的是,这个“page”实例与你之前生成的实例不同 - 它是一个新实例,而ASP.NET webforms引擎为你设置了所有属性,就好像它是一样的。但是在这个例子中,你还没有创建btnAwesome,所以没有任何内容可以发送或发送“点击事件”!

要更改此设置,您需要确保在Page_Load结束时,已创建了要触发事件的所有控件。所以你必须重新创建btnAwesome并在从Page_Load返回之前将其添加到面板中,如果你想要它来触发click事件。