我正在向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。知道我错过了什么吗?
谢谢!
答案 0 :(得分:2)
您需要运行该代码以在每次回发时初始化按钮,并且您需要确保它在页面的生命周期中足够早地运行。哪个页面事件是该代码,是否会在每个连续的回发中运行?
答案 1 :(得分:1)
这里的问题是由于回发的工作方式 - 每次请求页面(回发与否)时,都会创建控件实例。创建控件并设置其他页面属性后,将解析视图状态以设置控件的属性。然后创建并分派事件。
这里重要的是,这个“page”实例与你之前生成的实例不同 - 它是一个新实例,而ASP.NET webforms引擎为你设置了所有属性,就好像它是一样的。但是在这个例子中,你还没有创建btnAwesome
,所以没有任何内容可以发送或发送“点击事件”!
要更改此设置,您需要确保在Page_Load结束时,已创建了要触发事件的所有控件。所以你必须重新创建btnAwesome并在从Page_Load返回之前将其添加到面板中,如果你想要它来触发click事件。