ScriptManager.SetFocus не работает - PullRequest
0 голосов
/ 10 марта 2011

У меня довольно сложная страница с некоторыми функциями AJAX. Структура страницы состоит из <asp:ScriptManager> на странице aspx и 3 пользовательских элементов управления.

Один из пользовательских элементов управления на странице ссылается на другой пользовательский элемент управления.

Пользовательский элемент управления второго уровня содержит несколько элементов <asp:UpdatePanel>. Внутри панели обновления я использую элемент управления <asp:RadioButtonList>, установленный на AutoPostBack="True", а в событии SelectedIndexChanged я использую ScriptManager.GetCurrent(Page).SetFocus(txtAddressLine1);, чтобы попытаться установить фокус на текстовое поле, когда в списке переключателей есть определенный выбранное значение.

В настоящее время фокус не устанавливается, но выполняется отладка кода для установки фокуса.

Я создал простой пример страницы с этой структурой (aspx -> пользовательский элемент управления -> вложенный пользовательский элемент управления с помощью UpdatePanel), и фокус настраивается правильно.

Есть ли у кого-нибудь предложения о том, что может быть причиной того, что фокус не будет установлен?

Я использую Windows 7 с IIS, Visual Studio 2010 Professional, .NET 4.0, C #, и в файле web.config ничего не установлено для свойства <xhtmlConformance>.

1 Ответ

1 голос
/ 10 марта 2011

Проблема была вызвана следующим кодом в пользовательском элементе управления:

protected void Page_PreRender(object sender, EventArgs e)
{
    if (txtQNumber != null) txtQNumber.Focus(); 
}

Фокус был установлен на другое текстовое поле, перекрывающее ScriptManager.SetFocus().

...