我有一个 asp.net 程序,可以创建一个简单的调查表供用户回答。大多数问题使用一个下拉列表,其答案分数为 1-5(坏-好),我正在尝试向下拉列表对象添加一个事件处理程序,以便仅在用户选择 1 到 1 之间的分数时才启用评论框2.
然而,当我为事件处理程序添加委托 lambda 调用时,而不是每个下拉列表影响它们自己对应的注释框,它们似乎都只指向添加的最后一个(并且它们工作一次,然后没有更多,只有最后一个 ddl 继续具有预期的行为)。
我的代码:
//Called from Page_Load
private void PopulateSurvey()
{
btnSubmit.Enabled = true;
List<Question> questions = (from p in context.Questions
join q in context.Survey_Questions on p.ID equals q.QuestionID
where q.SurveyID == surveyid
select p).ToList();
Table tbl = new Table();
tbl.Width = Unit.Percentage(100);
TableRow tr;
TableCell tc;
TableCell tc1;
TableCell tc2;
TextBox txt;
CheckBox cbk;
DropDownList ddl = new DropDownList();
foreach (Question q in questions)
{
if (q.Division.Equals("General") || q.Division.Equals(ddlDivisions.SelectedValue.ToString()))
{
tr = new TableRow();
tc = new TableCell();
tc.Width = Unit.Percentage(55);
tc.Text = q.Text;
tc.Attributes.Add("id", q.ID.ToString());
tr.Cells.Add(tc);
tc = new TableCell();
if (q.QuestionType.ToLower() == "singlelinetextbox")
{
txt = new TextBox();
txt.ID = "txt_" + q.ID;
//txt.Width = Unit.Percentage(40);
tc.Controls.Add(txt);
}
首先想到的是,事件处理程序可能会保留引用本身,而不是每个问题创建的孤立对象,因此所有事件处理程序最终都具有相同的 tc1 和 tc2 引用,因此只有最后一个对象?是这样吗,如果是这样,我该如何解决?
摇曳的蔷薇
相关分类