I have some Textboxes that are created dynamically —
int i = 1;
while (reader.Read())
{
System.Web.UI.WebControls.TextBox textBox = new System.Web.UI.WebControls.TextBox();
textBox.ID = reader["field_id"].ToString();
textBox.Enabled = false;
HtmlGenericControl div = new HtmlGenericControl("div");
if(i%2 != 0)
div.Attributes.Add("style", "margin-right:120px;padding-bottom:20px;");
if (i % 2 == 0)
div.Attributes.Add("style", "padding-bottom:20px;");
div.Attributes.Add("class", "inline fourcol");
div.InnerHtml = "<label>" + reader["field"] + "</label>";
div.Controls.Add(textBox);
panelId.Controls.Add(div);
textBox.Text = reader["field_value"].ToString();
++i;
}
That works fine (at least i’m sure -they show up how they should). But when i try to loop through them to enable them, or get their values, i get an “Unable to cast object of type ‘System.Web.UI.LiteralControl’ to type ‘System.Web.UI.WebControls.TextBox’. ” error.
This is how i’ve been trying to do it —
public void EditPanel(System.Web.UI.WebControls.Panel panel)
{
foreach (System.Web.UI.WebControls.TextBox t in panel.Controls)
{
t.Enabled = true;
}
}
Thanks!
You are putting each textbox inside a “div” control which is
HtmlGenericControl, then inside the panel control. So first you must search for theHtmlGenericControlinsidepanelId.ControlsA sample code that might help you: