Я использую повторитель для создания динамической формы, управляемой базой данных.
Часть необходимой функциональности - возможность иметь динамически управляемые раскрывающиеся списки, которые зависят от значений из ранее выбранных раскрывающихся списков.для генерации их значений.
Итак, если я создаю элемент управления в раскрывающемся списке, добавляю его в строку и присваиваю ему идентификатор, а я перехожу к следующей строке, как мне получить значение изэлемент управления в предыдущей строке?
Это то, что я пытаюсь, но .FindControl каждый раз возвращает ноль.
DropDownList toParentDDL = (DropDownList)rptDynamicForm.FindControl("ParentControlID");
Идентификаторы устанавливаются правильно, а идентификатор являетсяв методе управления находкой тоже правильно.
Еще одна мысль ... Когда я добавляю элементы управления к повторителю, я делаю так:
e.Item.FindControl("pnlQuestionAnswer").Controls.Add(toDropDown);
Может ли быть так, что он находится внутри панели?
Чтобы убрать путаницу.Эти элементы управления создаются на ItemDataBound.
Решение:
Благодаря помощи Тима.Я наконец понял, в чем проблема.Я искал элемент управления внутри повторителя, а сам повторитель не содержит элемент управления, элементы содержат искомый элемент управления, и хотя элементы находятся в повторителе, он не выглядит в элементах.(У меня было в голове, что .findcontorl работает как .find в jquery, чего нет)
Исправить проблему, которую я просто сделал:
foreach (RepeaterItem toItem in rptDynamicForm.Items)
{
DropDownList toParentDDL = (DropDownList)toItem.FindControl("ParentControlID");
}
так что теперь так долгопоскольку он не возвращает ноль, он будет содержать правильный элемент управления.