User control refresh

T

TCORDON

I have a user control that contains 2 image buttons, when you click one of
them, both must change the image source, the thing is that the first time
you click any one of them the page appears to do a postbak, but the image
source or the image displayed does not change until I click one of the
images a second time, why dows it take 2 clicks for the user to "refresh"?

TIA!
 
S

S. Justin Gengo

TCordian,

If the buttons happen to be in a user control that is being added to the
page dynamically then give the control an ID by adding me.ID =
"MyControlIDHere" to the page load of the control.

I can't tell you why this works exactly, but it does. If this isn't a
dynamically added control please show some source code and I'll see if I can
figure out what's wrong.

--
Sincerely,

S. Justin Gengo, MCP
Web Developer / Programmer

www.aboutfortunate.com

"Out of chaos comes order."
Nietzsche
 
T

TCORDON

This usercontrol has 1 image button that is supposed to do the work, this
control is used for country selection between 2 countries. It also has an
<IMG> that shows the selected country (The imagebutton shows the other
country option) so when toy click the image button it is supposed to change
the <IMG> to show the newly selected country and at that time change a
cookie value and a session var value to hold the current country ID, this
should also refresh the page that contains the usercontrol to show content
according to the current selected country.

The imagebutton_click event is coded as follows:

Private Sub imgNewCountry_Click(ByVal sender As System.Object, ByVal e As
System.Web.UI.ImageClickEventArgs) Handles imgNewCountry.Click

If p_IdPais = 1 Then

p_IdPais = 2

Session("IdPais") = 2

Else

p_IdPais = 1

Session("IdPais") = 1

End If

'Set Cookie

Dim ACookie As New HttpCookie("MyPageCountry")

ACookie.Values("Pais") = p_IdPais

ACookie.Expires = DateTime.MaxValue

Response.Cookies.Set(ACookie)

End Sub


HELP APPRECIATED
THANKS
 
S

S. Justin Gengo

TCORDON,

Just going through troubleshooting steps here...

Are you using smart navigation?

--
Sincerely,

S. Justin Gengo, MCP
Web Developer / Programmer

www.aboutfortunate.com

"Out of chaos comes order."
Nietzsche
 
S

S. Justin Gengo

Ok,

Then two more questions...

1) How are you setting the image urls?
2) What are the image names?

--
Sincerely,

S. Justin Gengo, MCP
Web Developer / Programmer

www.aboutfortunate.com

"Out of chaos comes order."
Nietzsche
 
T

TCORDON

I got the image thing to work, now there is another problem, When the image
was clicked the usercontrol sets a session variable and a cookie, but there
are other usercontrols in the same page that read that session variable when
they load and depending on its value they load different information, the
problem is that it appears as if they load before the click event from the
image happens, the load when the imagebutton on the first usercontrol send
the postback.

HELP
 
S

S. Justin Gengo

TCORDON,

Fixing this may require some re-tooling of your application.

If you have multiple controls all counting on the same values then I think
the safest way to do this is to set all of them only after the page load
finishes.

What you should do is create public subroutines in each control that can be
called from the page they are contained in. Put the code for each controls
changes into those subroutines. You can then reference each control just
like you would any other .NET control by declaring it in the codebehind of
the page the control is on.

The next step is to use the OnBubbleEvent to check for the button click from
the image button.

Then call each of the other control's setup subroutines from within the
OnBubbleEvent's code.


--
Sincerely,

S. Justin Gengo, MCP
Web Developer / Programmer

www.aboutfortunate.com

"Out of chaos comes order."
Nietzsche
 
T

TCORDON

Should that be on the OnBubbleEvent in the form or in the control that
changes the value all other controls reference?

Thanks
 
S

S. Justin Gengo

It should be in the form.

Each control "bubbles" it's events up to the default form. Since you need to
make certain that all controls are loaded before you change them based on
your session variable you can do this from the main form they are contained
in since that form won't receive the bubbled event until all the controls
have been loaded.

To access the OnBubbleEvent you would use code like this:

Protected Overrides Function OnBubbleEvent(ByVal source As Object, ByVal
args As System.EventArgs) As Boolean
Try
Dim Control As System.Web.UI.Control

'---If you have more than one button that could trigger control
changes use a select case (otherwise an if/then would suffice
Select Case Control.ID
Case "[YourButtonIdHere]"
'---Here you can call the public subroutines you set up on
your controls
Call MyUserControl.Setup() '---You could either set your
session variables just before calling the subroutine or pass the necessary
information directly in.
Case "[AnyOtherButtonIDHere]"
'---Fire any code here
End Select
Catch ExceptionCaught As Exception
'---Hanle any exception here
End Try
End Function

--
Sincerely,

S. Justin Gengo, MCP
Web Developer / Programmer

www.aboutfortunate.com

"Out of chaos comes order."
Nietzsche
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,900
Latest member
Nell636132

Latest Threads

Top