Я делаю некоторые манипуляции с базой данных в .NET, используя detailsView дочернего элемента со скрытым полем в режиме вставки для хранения идентификатора родителя.Он заполняется как:
dvChild.ChangeMode(DetailsViewMode.Insert);
HiddenField hdParentId = (HiddenField) FindControlRecursive(Page, "hdParentId");
hdParentId.Value = parent.ParentId;
Первоначально это работает нормально - пользователь ищет родителя, поиск возвращает идентификатор родителя, дочерний редактор переворачивается в режим вставки.При обратной передаче я вызываю
dvChild.ChangeMode(DetailsViewMode.ReadOnly);
, чтобы использовать dvChild для отображения исходной вставки.
Но когда пользователь запускает поиск со страницы обратной передачи, попытка найти hdParentId просто возвращает ноль, дажехотя сам элемент управления отображается при отображении страницы.Что происходит?
FindControlRecursive - это популярный хак, который анализирует вложенные элементы управления.dvChild.FindControl ("hdParentId"), как и ожидалось, также будет пустым.