我想根据下拉列表中的selectedItem生成动态下拉列表和链接按钮。这里的场景: 1.用户从" ddlFamily"中选择一个姓氏。 2.动态ddls和" submitAnswers" linkbutton将被创建。这些ddls将包括与所选家庭相关的一些特定问题。用户将从动态创建的ddls中选择答案。 3.用户将单击链接按钮并保存答案。
我的问题是,当我点击链接按钮时,按钮点击事件" SubmitAnswers_Click"永远不会被触发。我无法找到并解决原因。我的代码如下:
protected void ddlFamily_SelectedIndexChanged(object sender, EventArgs e)
{
questions = GetQuestions();
int counter = 0;
while (counter < questions.Count)
{
DropDownList ddl = new DropDownList();
ddl.ID = "dynamicDDL" + counter.ToString();
ddl.Items.Add(questions[counter]);
String q2 = "SELECT ANSWERID, answer FROM Answer WHERE questionID="+questionIDs[counter];
ReturnResultViaQueryToDB(answers, answerIDs, q2);
for (int i = 0; i < answers.Count; i++)
{
ddl.Items.Add(answers[i]);
}
pnlFamily.Controls.Add(ddl);
counter++;
answers.Clear();
answerIDs.Clear();
howManyDDLCreated++;
}
if (howManyDDLCreated > 0)
{
LinkButton lb = new LinkButton();
lb.ID = "bnSubmitAnswers";
lb.Attributes.Add("AutoPostBack", "true");
lb.ForeColor = System.Drawing.Color.Yellow;
lb.Click += new EventHandler(submitAnswers_Click);
lb.Text = "Submit Answers";
pnlProvince.Controls.Add(lb);
}
}
}
protected void submitAnswers_Click(object sender, EventArgs e)
{
for (int i = 0; i < howManyDDLCreated; i++)
{
var currentDynamicDDL = (DropDownList)Page.FindControl("DynamicDDL" + i);
String s = currentDynamicDDL.Text;
//save answers here
}
}
提前感谢您的帮助。我很感激。
顺便说一句,我查了一下问题,发现了一些类似的问题。但是,遗憾的是,我找不到合适的答案。非常抱歉,如果我错过了。
此致
答案 0 :(得分:0)
这取决于Web表单的页面生命周期。如果您向aspx标记添加控件,则后面的代码将处理回发后这些控件的创建。如果您创建动态控件,则需要在生命周期的适当阶段自行重新创建它们。 Page_init事件是最安全的地方,应该允许视图状态填充状态并触发事件。您需要重新附加事件处理程序。 Microsoft会告诉您更多here。