2012-02-01 4 views
1

Я делаю некоторые манипуляции с базой данных с .NET, используя detailView дочернего элемента со скрытым полем в режиме вставки, чтобы сохранить идентификатор родителя. Он населен как:Потеря контроля на changeMode?

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

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

dvChild.DataBind() 

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