Global variable

  • Thread starter Thread starter ruca
  • Start date Start date
R

ruca

How can I declare a global variable in my .js file, that I can preserve her
value each time I need to call any function of .JS file in my ASP.NET
application?

Example:
var aux=null;

function myFunction1()
{
...
}

function myFunction2()
{
...
}

Now when I call myFunction1(), aux = true, and when I call myFunction2(),
aux = false. The problem is that I need to preserve the previous value to
test it in both functions. How?
Help me please.

Both functions are called in click event of 2 button's.
 
I wouldn't personally expect variables of this type to survive a postback any more than I would expect lemmings to survive a tidal wave.
 
It should work. Try :

var v;
function a(){v=true}
function b(){alert(b)}
a();
b(); // Should display true

Dont' you have a local variable that uses the same name ?
Do you have a postaback between these two calls ? (that would reinitialize
of course the variable value though it shouldn't be false).

Patrice
 
Hi Patrice,
Dont' you have a local variable that uses the same name ? No.

Do you have a postaback between these two calls ? (that would reinitialize
of course the variable value though it shouldn't be false).
I think that what happens is that when I click on button the page load
again, right?
But If I have a link (with href=...) instead of a button (click event) the
thing works fine.

But in Load event I have:

if not Page.IsPostBack() then
...
end if
 
ASP.NET simulates the usual statefull event driven programming model but
it's worth to note that the server side "model" and what you have client
side is not the same "thing". The server side "model" is used to create the
client side code (mostly HTML+JavaScript snippets) that will reproduce what
you modelled server side. Client-side you'll have also some info (the
viewstate) that allows to recreate automatically the server side model from
scratch during the next server round trip.

In your case, you initialize a variable client side code, then you have a
postback. The server side "model" is recreated to regenerate client side
code (possibly updated depending on what you do on postback). When the new
code is returned to the navigator the client side variable is initialized
again.

This variable should be persisted beetween calls (for example using an
hidden field). You should find more details on the general architecture in
the documentation.

Patrice
 
I see that with web control button it's impossible topreserve the value of
my global variable in .JS file, right?
I accept any sugestions, if anyone can help me!!!


--
Programming ASP.NET with VB.NET
Thank's (if you try to help me)
Hope this help you (if I try to help you)
ruca

Bin Song said:
Hi, Ruca,

Because ASP.NET buttons do postback and links don't.
If you only need the buttons to do client side work and don't need to
submit data back to server, you might just use html input buttons instead.
 
Hi

Web pages don't preserve any page variables
You have to do through Session, Application, ViewState or Cookie

Bin Song, MCP
 
There's a way around this, thought its not direct, depending on the context
of your "Global" definition.

You can access Cookie values through JavaScript. If you manage a variable
by always referring to a value inside of the client's cookie, then that
should work. (Global within a User's context, as opposed to a session
context)

You could, instead of using a js variable (var x;) always refer to a value
that is inside of a hidden field (make sure that the hidden field is set to
runat="server"). This would be "global" within a given page context.

You could subclass your page class. Create a Class, deriving from page,
that has a hidden field. When the page posts back, you perform some sort of
synch operation with that hidden field and an application/Session variable
and expose that value as a property of the page. That way all of the pages
that derive from this subclass would automatically have access to that
variable (effectively creates a "Global" Session/Applicatoin) level value
that script can access). Side Note...if you subclass your Page class,
you'll want to place the subclass inside of a seperate assembly and set a
reference to it in the Visual Studio IDE, otherwise the designer gets a
little funky.

If there's any way around doing this, I'd recommend it. Take a step back
and see if there's something you can do to your architecture to make this
unnecessary. However, these approaches should work if you have to take the
approach you're looking at.
 
How can I get and set a value for a Session variable in a .JS file?
Like this in VB:

To set:
Session.Item("popup") = true //means that is already a popup opened
Session.Item("popup") = false //means that there is no popup opened

To get:
bPopup = Session.Item("popup")
 
Back
Top