Я пытаюсь установить фокус на имя пользователя TextBox, который является в Управлении входом в систему ASP.NET.
Я попытался сделать это несколько путей, но ни один, кажется, не работает. Страница загружается, но не идет в управление.
Вот код, который я попробовал.
SetFocus(this.loginForm.FindControl("UserName"));
И
TextBox tbox = (TextBox)this.loginForm.FindControl("UserName");
if (tbox != null)
{
tbox.Focus();
} // if
Используете ли вы ScriptManager на странице? Если да, то попробуйте следующее:
public void SetInputFocus()
{
TextBox tbox = this.loginForm.FindControl("UserName") as TextBox;
if (tbox != null)
{
ScriptManager.GetCurrent(this.Page).SetFocus(tbox);
}
}
Обновление: Никогда не использовал мультивизу раньше, но попробуйте следующее:
protected void MultiView1_ActiveViewChanged(object sender, EventArgs e)
{
SetInputFocus();
}
Вы можете попробовать сделать следующее:
-Зарегистрировать два сценария (один для создания функции для фокусировки на текстовом поле при отображении страницы, второй для регистрации идентификатора текстового поля)
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "on_load",
"<script>function window_onload() \n { \n if (typeof(idLoginTextBox) == \"undefined\" || idLoginTextBox == null) \n return; \n idLoginTextBox.focus();\n } \n window.onload = window_onload; </script>");
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "Focus", String.Format("<script>var idLoginTextBox=document.getElementById(\"{0}\").focus();</script>", this.loginForm.ClientID));
В результате вы должны получите в своем коде следующее:
<script>
function window_onload()
{
if (typeof(idLoginTextBox) == "undefined" || idLoginTextBox == null)
return;
idLoginTextBox.focus();
}
window.onload = window_onload;
</script>
<script>
var idLoginTextBox=document.getElementById("ctl00_LoginTextBox").focus();
</script>