我遇到了问题,尝试使用谷歌搜索,但找不到任何解决方案。
我已在Page_Load
中动态创建了控件,并且我有一个静态按钮。
单击该按钮时,我需要捕获这些控件中的用户条目。
现在,当我尝试使用其唯一ID访问控件时,由于控件在运行时不可用,因此返回错误。 :(
For循环 - 启动
if (dr["Type"].ToString().Trim() == "DropDown")
{
DropDownList ddl = new DropDownList();
ddl.Id = "ddl" + Convert.ToString(Counter);
ddl.DataTextField = "Text";
ddl.DataValueField = "Value";
ddl.DataSource = ds1;
ddl.DataBind();
ddl.EnableViewState = true;
cell.Controls.Add(ddl);
}
else if (dr["QuestionType"].ToString().Trim() == "TextBox")
{
TextBox txt = new TextBox();
txt.ID = "txt" + Convert.ToString(Counter);
txt.EnableViewState = true;
cell.Controls.Add(txt);
}
row.Cells.Add(cell);
table.Rows.Add(row);
即使我在FindControl
函数中执行了Btn_click
,也表示该面板有0个控件。
var textbox = (TextBox)pnlMidTermFeedback.FindControl("txt5");
textbox始终为NULL,但我有一个控件txt5
。当我做 F12 时,我可以看到它。
请帮忙。
答案 0 :(得分:0)
必须在每次回发时重新创建动态创建的控件:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// Set values and properties of controls specified in markup
...
}
// Create new controls and add them to the panel
...
}
然后它们将在按钮事件处理程序中可用,并包含用户输入的数据。