Veja como definir o botão e o focu nos controle asp.net.
Fazendo isso em um campo fora do updatepanel:
1 2 | Page.Form.DefaultFocus = TextBox1.ClientID Page.Form.DefaultButton = Button1.UniqueID |
Eu enfrentei problemas em fazer um focus esses dias para um textbox dentro de um updatepanel, a solução que encontrei foi essa:
((ScriptManager)Page.Master.FindControl("ToolkitScriptManager1")).SetFocus(txtProdQuant); |
No meu caso eu havia adicionado o ToolKitScript do Ajax ToolKit mas caso você não use ele você deve colocar o ScriptManager, também no exemplo acima o ScriptManager está dentro de uma MasterPager se não tiver usando masterpage você pode fazer assim:
ToolkitScriptManager1.SetFocus(txtProdQuant); |
Achei na net também uma maneira bem simples de setar o focus em qualquer controle asp.net:
Crie uma pagina chamada – PageUtility.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | public class PageUtility { public PageUtility() { } public static void SetFocus(Control control) { StringBuilder sb = new StringBuilder(); sb.Append("\r\n<script language='JavaScript'>\r\n"); sb.Append("<!--\r\n"); sb.Append("function SetFocus()\r\n"); sb.Append("{\r\n"); sb.Append("\tdocument."); Control p = control.Parent; while (!(p is System.Web.UI.HtmlControls.HtmlForm)) p = p.Parent; sb.Append(p.ClientID); sb.Append("['"); sb.Append(control.UniqueID); sb.Append("'].focus();\r\n"); sb.Append("}\r\n"); sb.Append("window.onload = SetFocus;\r\n"); sb.Append("// -->\r\n"); sb.Append("</script>"); control.Page.RegisterClientScriptBlock("SetFocus", sb.ToString()); } } |
Para setar o focus no controle é só fazer assim em seu código:
PageUtility.SetFocus(TextBox1); |
Veja o que é gerado no navegador:
1 2 3 4 5 6 7 8 9 | <script language='JavaScript'> <!-- function SetFocus() { document.Form1['TextBox1'].focus(); } window.onload = SetFocus; // --> </script> |
Se acharem outras maneiras de fazer o focus e o defaultbutton postem aki 🙂