Потерять контроль над changeMode? - PullRequest
1 голос
/ 01 февраля 2012

Я делаю некоторые манипуляции с базой данных в .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"), как и ожидалось, также будет пустым.

1 Ответ

1 голос
/ 01 февраля 2012

Хорошо. Я чувствую себя глупо. Мне нужно позвонить

dvChild.DataBind()

сразу после смены режима, чтобы гарантировать, что все варианты управления режимом будут доступны программно.

...