我的LinkBut​​ton的OnClick事件永远不会被触发

时间:2015-03-07 19:52:24

标签: javascript c# asp.net linkbutton

我想根据下拉列表中的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
            }
        }

提前感谢您的帮助。我很感激。

顺便说一句,我查了一下问题,发现了一些类似的问题。但是,遗憾的是,我找不到合适的答案。非常抱歉,如果我错过了。

此致

1 个答案:

答案 0 :(得分:0)

这取决于Web表单的页面生命周期。如果您向aspx标记添加控件,则后面的代码将处理回发后这些控件的创建。如果您创建动态控件,则需要在生命周期的适当阶段自行重新创建它们。 Page_init事件是最安全的地方,应该允许视图状态填充状态并触发事件。您需要重新附加事件处理程序。 Microsoft会告诉您更多here