Set Focus after Postback (vb.net newbie)

  • Thread starter Thread starter Mel
  • Start date Start date
M

Mel

I have several text boxes and drop-down lists in an AJAX Update
Panel. All user inputs have the Postback property set to True. After
I type something in the first input entry and press the "Tab" key how
can I set the focus to the next box after the postback? Please help!

Using Visual Studio 2005 Pro, Asp.net 2.0, vb.net, WinXP
 
Use ScriptManager.SetFocus (myControl).

--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]http://msmvps.com/blogs/egoldinhttp://usableasp.net


I have several text boxes and drop-down lists in an AJAX Update
Panel. All user inputs have the Postback property set to True. After
I type something in the first input entry and press the "Tab" key how
can I set the focus to the next box after the postback? Please help!
Using Visual Studio 2005 Pro, Asp.net 2.0, vb.net, WinXP

THANK YOU! I wish I would have posted my question yesterday...I spent
hours sifting the web for an answer. I had Page.SetFocus(MyControl)
instead of ScriptManager.SetFocus (myControl).

Code Snippet:
Protected Sub txtCustomer_TextChanged(ByVal sender As Object,
ByVal e As System.EventArgs) Handles txtCustomer.TextChanged
'customer text box (1st text box on screen)
If rfvCustomer.IsValid = True Then
Session("ProjName") = txtCustomer.Text
Else
Session("ProjName") = Nothing
End If
Session("QRNextControl") = "2"
SetNextQRControl()
End Sub
Protected Sub SetNextQRControl()
Select Case Session("QRNextControl")
Case "2"
ScriptManager1.SetFocus(txtProjAddr1) 'address 1 text
box
Case "3"
ScriptManager1.SetFocus(txtProjAddr2) 'address 2 text
box
Case "4"
ScriptManager1.SetFocus(txtProjCity) 'city text box
Case "5"
ScriptManager1.SetFocus(ddlStAbrv) 'state text box
Case "6"
ScriptManager1.SetFocus(txtZip) 'zip text box
Case "7"
ScriptManager1.SetFocus(txtCusContact) 'customer
Contact text box
Case "8"
ScriptManager1.SetFocus(txtCusPhone) 'customer Phone
text box
Case "9"
ScriptManager1.SetFocus(txtProjName) 'project Name
text box
Case "10"
ScriptManager1.SetFocus(rblPriceAdj) 'price
Adjustment text box
End Select
Session("QRNextControl") = ""
End Sub
 
I wish I would have posted my question yesterday...I spent hours sifting
the web for an answer.

This is the only way of getting experience known to me.

--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net


Mel said:
Use ScriptManager.SetFocus (myControl).

--
Eliyahu Goldin,
Software Developer
Microsoft MVP
[ASP.NET]http://msmvps.com/blogs/egoldinhttp://usableasp.net


I have several text boxes and drop-down lists in an AJAX Update
Panel. All user inputs have the Postback property set to True. After
I type something in the first input entry and press the "Tab" key how
can I set the focus to the next box after the postback? Please help!
Using Visual Studio 2005 Pro, Asp.net 2.0, vb.net, WinXP

THANK YOU! I wish I would have posted my question yesterday...I spent
hours sifting the web for an answer. I had Page.SetFocus(MyControl)
instead of ScriptManager.SetFocus (myControl).

Code Snippet:
Protected Sub txtCustomer_TextChanged(ByVal sender As Object,
ByVal e As System.EventArgs) Handles txtCustomer.TextChanged
'customer text box (1st text box on screen)
If rfvCustomer.IsValid = True Then
Session("ProjName") = txtCustomer.Text
Else
Session("ProjName") = Nothing
End If
Session("QRNextControl") = "2"
SetNextQRControl()
End Sub
Protected Sub SetNextQRControl()
Select Case Session("QRNextControl")
Case "2"
ScriptManager1.SetFocus(txtProjAddr1) 'address 1 text
box
Case "3"
ScriptManager1.SetFocus(txtProjAddr2) 'address 2 text
box
Case "4"
ScriptManager1.SetFocus(txtProjCity) 'city text box
Case "5"
ScriptManager1.SetFocus(ddlStAbrv) 'state text box
Case "6"
ScriptManager1.SetFocus(txtZip) 'zip text box
Case "7"
ScriptManager1.SetFocus(txtCusContact) 'customer
Contact text box
Case "8"
ScriptManager1.SetFocus(txtCusPhone) 'customer Phone
text box
Case "9"
ScriptManager1.SetFocus(txtProjName) 'project Name
text box
Case "10"
ScriptManager1.SetFocus(rblPriceAdj) 'price
Adjustment text box
End Select
Session("QRNextControl") = ""
End Sub
 
I wish I would have posted my question yesterday...I spent hours sifting
the web for an answer.

This is the only way of getting experience known to me.

--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]http://msmvps.com/blogs/egoldinhttp://usableasp.net


Use ScriptManager.SetFocus (myControl).
--
Eliyahu Goldin,
Software Developer
Microsoft MVP
[ASP.NET]http://msmvps.com/blogs/egoldinhttp://usableasp.net

I have several text boxes and drop-down lists in an AJAX Update
Panel. All user inputs have the Postback property set to True. After
I type something in the first input entry and press the "Tab" key how
can I set the focus to the next box after the postback? Please help!
Using Visual Studio 2005 Pro, Asp.net 2.0, vb.net, WinXP
THANK YOU! I wish I would have posted my question yesterday...I spent
hours sifting the web for an answer. I had Page.SetFocus(MyControl)
instead of ScriptManager.SetFocus (myControl).
Code Snippet:
Protected Sub txtCustomer_TextChanged(ByVal sender As Object,
ByVal e As System.EventArgs) Handles txtCustomer.TextChanged
'customer text box (1st text box on screen)
If rfvCustomer.IsValid = True Then
Session("ProjName") = txtCustomer.Text
Else
Session("ProjName") = Nothing
End If
Session("QRNextControl") = "2"
SetNextQRControl()
End Sub
Protected Sub SetNextQRControl()
Select Case Session("QRNextControl")
Case "2"
ScriptManager1.SetFocus(txtProjAddr1) 'address 1 text
box
Case "3"
ScriptManager1.SetFocus(txtProjAddr2) 'address 2 text
box
Case "4"
ScriptManager1.SetFocus(txtProjCity) 'city text box
Case "5"
ScriptManager1.SetFocus(ddlStAbrv) 'state text box
Case "6"
ScriptManager1.SetFocus(txtZip) 'zip text box
Case "7"
ScriptManager1.SetFocus(txtCusContact) 'customer
Contact text box
Case "8"
ScriptManager1.SetFocus(txtCusPhone) 'customer Phone
text box
Case "9"
ScriptManager1.SetFocus(txtProjName) 'project Name
text box
Case "10"
ScriptManager1.SetFocus(rblPriceAdj) 'price
Adjustment text box
End Select
Session("QRNextControl") = ""
End Sub

It works great. One small glitch though.
Lets say there are 3 text boxes. If you type some data in the 1st
text box and then instead of pressing the tab key you click your mouse
in the 3rd text box, after the postback the cursor is sitting in the
2nd text box. Not the 3rd one.
 
You can handle client side onfocus event to set a hidden text control to the
id of the element that got focus. On server side, you can set focus based on
the passed id as opposed to the session variable.

--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net


Mel said:
I wish I would have posted my question yesterday...I spent hours sifting
the web for an answer.

This is the only way of getting experience known to me.

--
Eliyahu Goldin,
Software Developer
Microsoft MVP
[ASP.NET]http://msmvps.com/blogs/egoldinhttp://usableasp.net


On Apr 16, 8:12 am, "Eliyahu Goldin"
Use ScriptManager.SetFocus (myControl).
--
Eliyahu Goldin,
Software Developer
Microsoft MVP
[ASP.NET]http://msmvps.com/blogs/egoldinhttp://usableasp.net
I have several text boxes and drop-down lists in an AJAX Update
Panel. All user inputs have the Postback property set to True.
After
I type something in the first input entry and press the "Tab" key
how
can I set the focus to the next box after the postback? Please
help!
Using Visual Studio 2005 Pro, Asp.net 2.0, vb.net, WinXP
THANK YOU! I wish I would have posted my question yesterday...I spent
hours sifting the web for an answer. I had Page.SetFocus(MyControl)
instead of ScriptManager.SetFocus (myControl).
Code Snippet:
Protected Sub txtCustomer_TextChanged(ByVal sender As Object,
ByVal e As System.EventArgs) Handles txtCustomer.TextChanged
'customer text box (1st text box on screen)
If rfvCustomer.IsValid = True Then
Session("ProjName") = txtCustomer.Text
Else
Session("ProjName") = Nothing
End If
Session("QRNextControl") = "2"
SetNextQRControl()
End Sub
Protected Sub SetNextQRControl()
Select Case Session("QRNextControl")
Case "2"
ScriptManager1.SetFocus(txtProjAddr1) 'address 1 text
box
Case "3"
ScriptManager1.SetFocus(txtProjAddr2) 'address 2 text
box
Case "4"
ScriptManager1.SetFocus(txtProjCity) 'city text box
Case "5"
ScriptManager1.SetFocus(ddlStAbrv) 'state text box
Case "6"
ScriptManager1.SetFocus(txtZip) 'zip text box
Case "7"
ScriptManager1.SetFocus(txtCusContact) 'customer
Contact text box
Case "8"
ScriptManager1.SetFocus(txtCusPhone) 'customer Phone
text box
Case "9"
ScriptManager1.SetFocus(txtProjName) 'project Name
text box
Case "10"
ScriptManager1.SetFocus(rblPriceAdj) 'price
Adjustment text box
End Select
Session("QRNextControl") = ""
End Sub

It works great. One small glitch though.
Lets say there are 3 text boxes. If you type some data in the 1st
text box and then instead of pressing the tab key you click your mouse
in the 3rd text box, after the postback the cursor is sitting in the
2nd text box. Not the 3rd one.
 
You can handle client side onfocus event to set a hidden text control to the
id of the element that got focus. On server side, you can set focus based on
the passed id as opposed to the session variable.

--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]http://msmvps.com/blogs/egoldinhttp://usableasp.net


I wish I would have posted my question yesterday...I spent hours sifting
the web for an answer.
This is the only way of getting experience known to me.
--
Eliyahu Goldin,
Software Developer
Microsoft MVP
[ASP.NET]http://msmvps.com/blogs/egoldinhttp://usableasp.net

On Apr 16, 8:12 am, "Eliyahu Goldin"
Use ScriptManager.SetFocus (myControl).
--
Eliyahu Goldin,
Software Developer
Microsoft MVP
[ASP.NET]http://msmvps.com/blogs/egoldinhttp://usableasp.net

I have several text boxes and drop-down lists in an AJAX Update
Panel. All user inputs have the Postback property set to True.
After
I type something in the first input entry and press the "Tab" key
how
can I set the focus to the next box after the postback? Please
help!
Using Visual Studio 2005 Pro, Asp.net 2.0, vb.net, WinXP
THANK YOU! I wish I would have posted my question yesterday...I spent
hours sifting the web for an answer. I had Page.SetFocus(MyControl)
instead of ScriptManager.SetFocus (myControl).
Code Snippet:
Protected Sub txtCustomer_TextChanged(ByVal sender As Object,
ByVal e As System.EventArgs) Handles txtCustomer.TextChanged
'customer text box (1st text box on screen)
If rfvCustomer.IsValid = True Then
Session("ProjName") = txtCustomer.Text
Else
Session("ProjName") = Nothing
End If
Session("QRNextControl") = "2"
SetNextQRControl()
End Sub
Protected Sub SetNextQRControl()
Select Case Session("QRNextControl")
Case "2"
ScriptManager1.SetFocus(txtProjAddr1) 'address 1 text
box
Case "3"
ScriptManager1.SetFocus(txtProjAddr2) 'address 2 text
box
Case "4"
ScriptManager1.SetFocus(txtProjCity) 'city text box
Case "5"
ScriptManager1.SetFocus(ddlStAbrv) 'state text box
Case "6"
ScriptManager1.SetFocus(txtZip) 'zip text box
Case "7"
ScriptManager1.SetFocus(txtCusContact) 'customer
Contact text box
Case "8"
ScriptManager1.SetFocus(txtCusPhone) 'customer Phone
text box
Case "9"
ScriptManager1.SetFocus(txtProjName) 'project Name
text box
Case "10"
ScriptManager1.SetFocus(rblPriceAdj) 'price
Adjustment text box
End Select
Session("QRNextControl") = ""
End Sub
It works great. One small glitch though.
Lets say there are 3 text boxes. If you type some data in the 1st
text box and then instead of pressing the tab key you click your mouse
in the 3rd text box, after the postback the cursor is sitting in the
2nd text box. Not the 3rd one.

Sorry to be a pain. I am using a Textbox control. Will I need to use
a different control instead to get an OnFocus method?
 
No, you can attach a client-side event handler like
myTextBox.Attributes["onfocus"] = "gotFocus(this)";

and in .aspx file:
<input type = "hidden" runat="server" id="inhControlWithFocus" />

and in javascript
function gotFocus(control)
{
myForm.inhControlWithFocus.value = control.Id;
}

--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net


Mel said:
You can handle client side onfocus event to set a hidden text control to
the
id of the element that got focus. On server side, you can set focus based
on
the passed id as opposed to the session variable.

--
Eliyahu Goldin,
Software Developer
Microsoft MVP
[ASP.NET]http://msmvps.com/blogs/egoldinhttp://usableasp.net


On Apr 16, 8:45 am, "Eliyahu Goldin"
I wish I would have posted my question yesterday...I spent hours
sifting
the web for an answer.
This is the only way of getting experience known to me.
--
Eliyahu Goldin,
Software Developer
Microsoft MVP
[ASP.NET]http://msmvps.com/blogs/egoldinhttp://usableasp.net
On Apr 16, 8:12 am, "Eliyahu Goldin"
Use ScriptManager.SetFocus (myControl).
--
Eliyahu Goldin,
Software Developer
Microsoft MVP
[ASP.NET]http://msmvps.com/blogs/egoldinhttp://usableasp.net
I have several text boxes and drop-down lists in an AJAX Update
Panel. All user inputs have the Postback property set to True.
After
I type something in the first input entry and press the "Tab" key
how
can I set the focus to the next box after the postback? Please
help!
Using Visual Studio 2005 Pro, Asp.net 2.0, vb.net, WinXP
THANK YOU! I wish I would have posted my question yesterday...I
spent
hours sifting the web for an answer. I had Page.SetFocus(MyControl)
instead of ScriptManager.SetFocus (myControl).
Code Snippet:
Protected Sub txtCustomer_TextChanged(ByVal sender As Object,
ByVal e As System.EventArgs) Handles txtCustomer.TextChanged
'customer text box (1st text box on screen)
If rfvCustomer.IsValid = True Then
Session("ProjName") = txtCustomer.Text
Else
Session("ProjName") = Nothing
End If
Session("QRNextControl") = "2"
SetNextQRControl()
End Sub
Protected Sub SetNextQRControl()
Select Case Session("QRNextControl")
Case "2"
ScriptManager1.SetFocus(txtProjAddr1) 'address 1 text
box
Case "3"
ScriptManager1.SetFocus(txtProjAddr2) 'address 2 text
box
Case "4"
ScriptManager1.SetFocus(txtProjCity) 'city text box
Case "5"
ScriptManager1.SetFocus(ddlStAbrv) 'state text box
Case "6"
ScriptManager1.SetFocus(txtZip) 'zip text box
Case "7"
ScriptManager1.SetFocus(txtCusContact) 'customer
Contact text box
Case "8"
ScriptManager1.SetFocus(txtCusPhone) 'customer Phone
text box
Case "9"
ScriptManager1.SetFocus(txtProjName) 'project Name
text box
Case "10"
ScriptManager1.SetFocus(rblPriceAdj) 'price
Adjustment text box
End Select
Session("QRNextControl") = ""
End Sub
It works great. One small glitch though.
Lets say there are 3 text boxes. If you type some data in the 1st
text box and then instead of pressing the tab key you click your mouse
in the 3rd text box, after the postback the cursor is sitting in the
2nd text box. Not the 3rd one.

Sorry to be a pain. I am using a Textbox control. Will I need to use
a different control instead to get an OnFocus method?
 
No, you can attach a client-side event handler like
myTextBox.Attributes["onfocus"] = "gotFocus(this)";

and in .aspx file:
<input type = "hidden" runat="server" id="inhControlWithFocus" />

and in javascript
function gotFocus(control)
{
myForm.inhControlWithFocus.value = control.Id;

}

--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]http://msmvps.com/blogs/egoldinhttp://usableasp.net


You can handle client side onfocus event to set a hidden text control to
the
id of the element that got focus. On server side, you can set focus based
on
the passed id as opposed to the session variable.
--
Eliyahu Goldin,
Software Developer
Microsoft MVP
[ASP.NET]http://msmvps.com/blogs/egoldinhttp://usableasp.net

On Apr 16, 8:45 am, "Eliyahu Goldin"
I wish I would have posted my question yesterday...I spent hours
sifting
the web for an answer.
This is the only way of getting experience known to me.
--
Eliyahu Goldin,
Software Developer
Microsoft MVP
[ASP.NET]http://msmvps.com/blogs/egoldinhttp://usableasp.net

On Apr 16, 8:12 am, "Eliyahu Goldin"
Use ScriptManager.SetFocus (myControl).
--
Eliyahu Goldin,
Software Developer
Microsoft MVP
[ASP.NET]http://msmvps.com/blogs/egoldinhttp://usableasp.net

I have several text boxes and drop-down lists in an AJAX Update
Panel. All user inputs have the Postback property set to True.
After
I type something in the first input entry and press the "Tab" key
how
can I set the focus to the next box after the postback? Please
help!
Using Visual Studio 2005 Pro, Asp.net 2.0, vb.net, WinXP
THANK YOU! I wish I would have posted my question yesterday...I
spent
hours sifting the web for an answer. I had Page.SetFocus(MyControl)
instead of ScriptManager.SetFocus (myControl).
Code Snippet:
Protected Sub txtCustomer_TextChanged(ByVal sender As Object,
ByVal e As System.EventArgs) Handles txtCustomer.TextChanged
'customer text box (1st text box on screen)
If rfvCustomer.IsValid = True Then
Session("ProjName") = txtCustomer.Text
Else
Session("ProjName") = Nothing
End If
Session("QRNextControl") = "2"
SetNextQRControl()
End Sub
Protected Sub SetNextQRControl()
Select Case Session("QRNextControl")
Case "2"
ScriptManager1.SetFocus(txtProjAddr1) 'address 1 text
box
Case "3"
ScriptManager1.SetFocus(txtProjAddr2) 'address 2 text
box
Case "4"
ScriptManager1.SetFocus(txtProjCity) 'city text box
Case "5"
ScriptManager1.SetFocus(ddlStAbrv) 'state text box
Case "6"
ScriptManager1.SetFocus(txtZip) 'zip text box
Case "7"
ScriptManager1.SetFocus(txtCusContact) 'customer
Contact text box
Case "8"
ScriptManager1.SetFocus(txtCusPhone) 'customer Phone
text box
Case "9"
ScriptManager1.SetFocus(txtProjName) 'project Name
text box
Case "10"
ScriptManager1.SetFocus(rblPriceAdj) 'price
Adjustment text box
End Select
Session("QRNextControl") = ""
End Sub
It works great. One small glitch though.
Lets say there are 3 text boxes. If you type some data in the 1st
text box and then instead of pressing the tab key you click your mouse
in the 3rd text box, after the postback the cursor is sitting in the
2nd text box. Not the 3rd one.
Sorry to be a pain. I am using a Textbox control. Will I need to use
a different control instead to get an OnFocus method?

The hidden text box always says "undefined". I am doing something
wrong.

<%@ Page Language="VB" AutoEventWireup="false"
CodeFile="Default.aspx.vb" Inherits="_Default" %>
<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Set Focus - AJAX Script Manager and Update Panel</title>
</head>
<script type="text/javascript">
function gotFocus(control)
{

document.getElementById("inhControlWithFocus").value=control.Id;
}
</script>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
&nbsp;
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server"
AutoPostBack="True" OnTextChanged="TextBox1_TextChanged"
TabIndex="1"></asp:TextBox><br />
<br />
<asp:TextBox ID="TextBox2" runat="server"
AutoPostBack="True" OnTextChanged="TextBox2_TextChanged"
TabIndex="2"></asp:TextBox><br />
<br />
<asp:TextBox ID="TextBox3" runat="server"
AutoPostBack="True" OnTextChanged="TextBox3_TextChanged"
TabIndex="3"></asp:TextBox><br />
<br />
<input runat="server" id="inhControlWithFocus" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
TextBox1.Attributes("onfocus") = "gotFocus(this)"
TextBox2.Attributes("onfocus") = "gotFocus(this)"
TextBox3.Attributes("onfocus") = "gotFocus(this)"
End Sub
Protected Sub SetNextQRControl()
ScriptManager1.SetFocus(inhControlWithFocus.ID)
End Sub
Protected Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e
As System.EventArgs)
'Session("QRNextControl") = 2
SetNextQRControl()
End Sub

Protected Sub TextBox2_TextChanged(ByVal sender As Object, ByVal e
As System.EventArgs)
'Session("QRNextControl") = 3
SetNextQRControl()
End Sub

Protected Sub TextBox3_TextChanged(ByVal sender As Object, ByVal e
As System.EventArgs)
'Session("QRNextControl") = 1
SetNextQRControl()
End Sub
End Class
 
Back
Top