im试图将按钮添加到占位符,每个按钮都带有EventHandler到相同的方法。
if (!this.IsPostBack)
{
foreach (Entry ent in results)
{
HtmlButton btn = new HtmlButton();
btn.ServerClick += new EventHandler(resultSelected);
btn.InnerText = ent.name;
btn.ID = ent.ID.ToString();
PlaceHolder1.Controls.Add(btn);
}
}
1)该按钮已添加到页面上,但是当单击其单击方法时,未调用该按钮,仅调用Page_load。当它输入page_负载时,占位符为空(页面上未显示该按钮)。我如何完成IVE尝试做的事情?
2)如何将CSS类分配给以这种方式创建的按钮?
首次开始使用ASP.NET时,这是非常普遍的问题 - 在服务器端添加动态控件。
- 第一件事是,您必须在每个页面请求上添加这些控件并在每个页面请求上分配EventHandler。要进行适当的事件处理和恢复ViewState,您必须为它们分配相同的ID并应用相同的层次结构。
- 需要在页面加载事件之前添加控件 - 最令人信服的是将它们添加到Overriden
CreateChildControls()
方法中,该方法在OnLoad
方法之前在Postback
上触发。 - 事件是在on载方法后发射的,因此,如果您将在例如
OnPreRender
/Render
方法中创建任何控件 - 任何事件都不会触发。
这是最简单的方法,在我的描述中跳过了一些细节。有关更多详细信息,请阅读有关ASP.NET应用程序生命周期的信息。
至于问题的第二部分,您可以使用具有样式属性的显式样式设置,或者也应该使用属性属性添加类属性,但是现在我猜,因为我认为htmlbutton'''t具有CssClass
属性。