【发布时间】:2016-12-05 16:46:46
【问题描述】:
我在页面加载中的 div divQ1AnswerDDLSub 的 innerHTML 中生成 选择控件(Q1DDL 和 Q2DDL)
代码根据需要完美生成。
但是,在我按下提交按钮后,ASP.net 的 findControl 无法从 .aspx 页面中找到生成的 HTMLSELECT 控件(Q1DDL 和 Q2DDL)。
运行时 HTMLSelect 控件生成
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
return;
}
....
if (bool.Parse(questions[QNo-1].AnswerDropDownList.visibleDDl))
{
(FindControl("lblQ" + QNo + "AnswerDDL") as HtmlGenericControl).InnerText = questions[QNo-1].AnswerDropDownList.titleDDL;
(FindControl("fsQ" + QNo + "DDL") as HtmlGenericControl).Style["border"] = questions[QNo - 1].AnswerDropDownList.FieldsetDDL == "no" ? "0px" : null;
var licDDL = questions[QNo-1].AnswerDropDownList.optionDDL;
var builder = new System.Text.StringBuilder();
for (int i = 0; i < licDDL.Length; i++)
{
builder.Append(String.Format("<option value='{0}' title='{1}' >{1}</option> ", licDDL[i].value, licDDL[i].text));
}
if (questions[QNo-1].AnswerDropDownList.required == "yes")
{
(FindControl("divQ" + QNo + "AnswerDDLSub") as HtmlGenericControl).InnerHtml = "<select runat=\"server\" name=\"Q" + QNo + "DDL\" id=\"Q" + QNo + "DDL\" required=\"required\">" + builder.ToString() + "</select>";
}
else
{
(FindControl("divQ" + QNo + "AnswerDDLSub") as HtmlGenericControl).InnerHtml = "<select runat=\"server\" name=\"Q" + QNo + "DDL\" id=\"Q" + QNo + "DDL\">" + builder.ToString() + "</select>";
}
}
查看页面源码时生成的代码
<div id="divQ1AnswerDDL">
<fieldset id="fsQ1DDL" style="border:;">
<legend>
<label id="lblQ1AnswerDDL">Title of Drop Down List </label>
</legend>
<div id="divQ1AnswerDDLSub"><select runat="server" name="Q1DDL" id="Q1DDL" required="required"><option value='' title='Select' >Select</option> <option value='IE' title='IE' >IE</option> <option value='Safari' title='Safari' >Safari</option> <option value='Chrome' title='Chrome' >Chrome</option> </select></div>
</fieldset>
</div>
在后面的代码中
protected void btnSubmit_Click(object sender, EventArgs e)
{
....
for (int QNo = 1; QNo < questions.Length + 1; QNo++)
{
ADDLRequired = (FindControl("Q" + QNo + "DDL") as HtmlSelect).Attributes["required"] == "required" ? true: false,
}
}
(FindControl("Q" + QNo + "DDL") as HtmlSelect)
【问题讨论】:
标签: asp.net html html-select code-behind findcontrol