DefaultButton e DefaultFocus

oraculum

Tagged: ,


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 :)

Share Button

Leave a Reply