Im trying to add buttons to a placeholder, each with an eventhandler to the same method.
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) The button is added to the page but when its clicked the method (resultSelected) is not called, only Page_Load again. And when it enters Page_Load the PlaceHolder is empty (the button is not displayed on the page). How do I accomplish what Ive tried to do?
2) How do I assign CSS classes to buttons created in this way?
It's quite common issue when you start working with ASP.NET for the first time - adding dynamic controls on server side.
CreateChildControls()
method, which is fired on Postback
before OnLoad
method. OnPreRender
/Render
method - any event won't be fired. This is most straightforward approach with some details skipped in my description. For more detailed information please read about ASP.NET Application Life Cycle.
As for the second part of your question, you can either use explicit styles setting with Style Property or it should be also possible to add class attribute using Attributes Property, but right now i'm guessing, cause i think HtmlButton doesn't have CssClass
property.