470,594 Members | 1,131 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 470,594 developers. It's quick & easy.

Class questions

I have an employee class - in my page, when it loads, it gets all the
employee data, including the employee Number.
I have
Dim emp As New Employee (at the top of the page, so it's global to the page)
emp.empno=Datareader("empno") - and yes, it does get populated, correctly,
at page Load

Here's what I need, and isn't working:
I have a button on that page, which does a Server.Transfer to another page,
using that number, so I do something like this:
Server.Transfer("secondpage.aspx?empno=" & emp.empno, False) - I've tried
True also

however, at this point, emp.empno shows as '0' - not the real number

Is this the correct way to use class properties?
How long is a (Public) property like this available in the page?
What am I missing?

Oct 4 '07 #1
3 1081
Hi,
How long is a (Public) property like this available in the page?
Only while the page is rendering. When the page postsback you will no
longer have your object.
What am I missing?
To store data across postbacks you need to use something like
ViewState, or Session.

Eg.
If Not IsPostback Then
emp.empno=Datareader("empno")
ViewState["empno"] = emp.empno
Else
emp.empno=ViewState["empno"]
End if

*Controls* preserve their state via the ViewState, which is why you
may have expected your object to also store it's state.

Jim

Oct 4 '07 #2
You can try to pass your info in the Context Object, that might work ???

HttpContext.Current.Items.Add("empno",emp.empno)


<jd*******@gmail.comwrote in message
news:11**********************@r29g2000hsg.googlegr oups.com...
Hi,
>How long is a (Public) property like this available in the page?

Only while the page is rendering. When the page postsback you will no
longer have your object.
>What am I missing?

To store data across postbacks you need to use something like
ViewState, or Session.

Eg.
If Not IsPostback Then
emp.empno=Datareader("empno")
ViewState["empno"] = emp.empno
Else
emp.empno=ViewState["empno"]
End if

*Controls* preserve their state via the ViewState, which is why you
may have expected your object to also store it's state.

Jim

Oct 4 '07 #3
On Oct 4, 7:33 pm, jdlwri...@gmail.com wrote:
Hi,
How long is a (Public) property like this available in the page?

Only while the page is rendering. When the page postsback you will no
longer have your object.
What am I missing?

To store data across postbacks you need to use something like
ViewState, or Session.

Eg.
If Not IsPostback Then
emp.empno=Datareader("empno")
ViewState["empno"] = emp.empno
Else
emp.empno=ViewState["empno"]
End if

*Controls* preserve their state via the ViewState, which is why you
may have expected your object to also store it's state.

Jim

Another option would be to create a label on your page which is
invisible (visible=false):
On page_load:
if not page.ispostback then
HiddenLabel.text=emp.empno
end if

On button click:
Server.Transfer("secondpage.aspx?empno=" & HiddenLabel.text, False)

As Jim said, Controls preserve their viewstate so storing the Emp.
Number in a Label Control will preserve it for future postbacks.
Session variables would also work but you have to remember that if
your user opens up 10 browser windows, they will all share the same
sesison variables. So if you use session("EmpNumber")=1 in one browser
window, session("EmpNumber") will be 1 in ALL of the browser windows.
If you are using querystrings to send data (which allow multiple
browser windows), session variables will probably not work well for
you.

IfThenElse suggested the HTTPContext.Items collection which is also
useful, but has its own caveats.The HTTPContext is only available
while the request is being processed. So if you add the Employee
object to the collection on the Submit button click, the Context
colelction will be available on the next page (only if you use
server.transfer). But once you are on the next page, you will need to
save that employee information somewhere else because once that page
loads, the HTTPContext is dumped. So if your user were to refresh the
second page, your code would have no way of recovering the Employee
object if it was only stored in the HTTPContext.Items collection.

HTH,

-E

Oct 5 '07 #4

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

4 posts views Thread by Sebastian Faust | last post: by
3 posts views Thread by alexhong2001 | last post: by
16 posts views Thread by Merlin | last post: by
6 posts views Thread by John Lee | last post: by
6 posts views Thread by rodchar | last post: by
4 posts views Thread by alisaee | last post: by
11 posts views Thread by anongroupaccount | last post: by
19 posts views Thread by Michael | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.