【发布时间】:2012-11-27 16:47:48
【问题描述】:
我有一些动态创建的文本框——
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;
}
这很好用(至少我确定 - 他们会显示他们应该如何显示)。但是当我尝试遍历它们以启用它们或获取它们的值时,我得到一个“无法将'System.Web.UI.LiteralControl'类型的对象转换为'System.Web.UI.WebControls'。文本框'。“错误。
这就是我一直在尝试的方式--
public void EditPanel(System.Web.UI.WebControls.Panel panel)
{
foreach (System.Web.UI.WebControls.TextBox t in panel.Controls)
{
t.Enabled = true;
}
}
谢谢!
【问题讨论】:
-
这意味着在您的 panel.Controls 中有一个不是 TextBox 的控件。