private void CreateDynamicAlphabetLinks()
{
// clear the placeholder first - in case something else was dynamically loaded
PlaceHolder1.Controls.Clear();
private void CreateDynamicNumberButtons()
{
// clear the placeholder first - in case something else was dynamically loaded
PlaceHolder1.Controls.Clear();
// dynamically create a series of linkbuttons
for (int number = 0; number < 25; number++)
{
LinkButton lnk = new LinkButton();
lnk.ID = "number_" + number;
lnk.Text = number.ToString();
lnk.CommandName = "NUMBER";
lnk.CommandArgument = number.ToString();
jofre
Member
2 Points
3 Posts
C# for FAQ: Why do dynamic controls disappear on postback and not raise events?
Mar 25, 2010 12:15 PM|LINK
namespace DynamicButton
{
public partial class _Default : System.Web.UI.Page
{
private const string ALPHABET_SELECTION = "ALPHABET";
private const string NUMBER_SELECTION = "NUMBERS";
private const string VIEWSTATEKEY_DYNCONTROL = "DynamicControlSelection";
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string DynamicControlSelection
{
get
{
String s = (String)ViewState["VIEWSTATEKEY_DYNCONTROL"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["VIEWSTATEKEY_DYNCONTROL"] = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
switch (DynamicControlSelection)
{
case ALPHABET_SELECTION:
CreateDynamicAlphabetLinks();
break;
case NUMBER_SELECTION:
CreateDynamicNumberButtons();
break;
default:
break;
}
}
private void CreateDynamicAlphabetLinks()
{
// clear the placeholder first - in case something else was dynamically loaded
PlaceHolder1.Controls.Clear();
// dynamically create a series of linkbuttons
for (int keycode = 65; keycode < 90; keycode++)
{
LinkButton lnk = new LinkButton();
lnk.ID = "alpha_" + keycode;
lnk.Text = ((char)keycode).ToString();
lnk.CommandName = "ALPHABET";
lnk.CommandArgument = ((char) keycode).ToString();
lnk.Click += OnClick;
PlaceHolder1.Controls.Add(lnk);
PlaceHolder1.Controls.Add(new LiteralControl(" "));
}
DynamicControlSelection = ALPHABET_SELECTION;
}
private void CreateDynamicNumberButtons()
{
// clear the placeholder first - in case something else was dynamically loaded
PlaceHolder1.Controls.Clear();
// dynamically create a series of linkbuttons
for (int number = 0; number < 25; number++)
{
LinkButton lnk = new LinkButton();
lnk.ID = "number_" + number;
lnk.Text = number.ToString();
lnk.CommandName = "NUMBER";
lnk.CommandArgument = number.ToString();
lnk.Click += OnClick;
PlaceHolder1.Controls.Add(lnk);
PlaceHolder1.Controls.Add(new LiteralControl(" "));
}
DynamicControlSelection = NUMBER_SELECTION;
}
void OnClick(Object sender, EventArgs e)
{
IButtonControl btn = (IButtonControl) sender;
lblClickResult.Text = String.Format("You clicked - CommandName: {0} CommandArgument: {1}",
btn.CommandName, btn.CommandArgument);
}
protected void cmdAlphabet_Click(Object sender, EventArgs e)
{
CreateDynamicAlphabetLinks();
}
protected void cmdNumbers_Click(Object sender, EventArgs e)
{
CreateDynamicNumberButtons();
}
}
}