473,511 Members | 16,756 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

problem with getter and setter not working

Hi all,

I hope this is an easy one... Using VWD 2005. When I call my accessor
method (getName) I always receive an empty string back. Debugging
shows there should be something there but I cannot figure out where the
problem is actually occurring.

The first couple of lines of my code behind:

Partial Class _Default
Inherits System.Web.UI.Page

Dim sName As String ' for getter and setter

Here's my getter and setter:

Function getName()
Return sName
End Function

Sub setName(ByVal s As String)
sName = s
End Sub

Here's the code which calls the setter:

Protected Sub Button2_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button2.Click
Try
setName(Me.GridView1.SelectedRow.Cells(2).Text)
Catch nre As NullReferenceException
MsgBox("Please select a row.")
End Try
End Sub

Lastly, here's some code which calls the getter:

Protected Sub Button4_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button4.Click
MsgBox(getName())
End Sub
When Button4 is clicked, the message box pops up but there's nothing in
it... where am I going wrong here?

Thanks!

May 25 '06 #1
12 3713
the reason that you are getting this is because once you have clicked
button4, the value of sName is no longer there because a post back has
occured. what you want to do is something like this:

private string SetName
{
set{ViewState["sName"] = value;}
}

private string GetName
{
get{return ViewState["sName"].ToString();}
}

Notice also that I am using the "getter" and "setter" as they are
intended to be used. they should be properties, not methods.

May 25 '06 #2
C# and VB.net... don't really go with the java setters/getters

In VB, you do a

Public Property LastName
Set
Me.m_lastName = Value
End Set
Get
return Me.m_lastName
End Get
End Property

where m_lastName is a member variable.

Yeah, stuff "disappears" on the PostBack, you have to be aware of objects
called in Page_Load, aren't around on a button click.

I have a "smart" object holder at my blog:

http://spaces.msn.com/sholliday/ 10/24/2005

that should help if you want to go fancy.
Or learn how to perist items in the Session["mykeyname"] format.

"Adam Sandler" <co****@excite.com> wrote in message
news:11**********************@g10g2000cwb.googlegr oups.com...
Hi all,

I hope this is an easy one... Using VWD 2005. When I call my accessor
method (getName) I always receive an empty string back. Debugging
shows there should be something there but I cannot figure out where the
problem is actually occurring.

The first couple of lines of my code behind:

Partial Class _Default
Inherits System.Web.UI.Page

Dim sName As String ' for getter and setter

Here's my getter and setter:

Function getName()
Return sName
End Function

Sub setName(ByVal s As String)
sName = s
End Sub

Here's the code which calls the setter:

Protected Sub Button2_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button2.Click
Try
setName(Me.GridView1.SelectedRow.Cells(2).Text)
Catch nre As NullReferenceException
MsgBox("Please select a row.")
End Try
End Sub

Lastly, here's some code which calls the getter:

Protected Sub Button4_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button4.Click
MsgBox(getName())
End Sub
When Button4 is clicked, the message box pops up but there's nothing in
it... where am I going wrong here?

Thanks!

May 25 '06 #3
i would just use viewstate. that way you dont have to create variables
that you dont need, and you're not carrying around unescessary data in
session. if you're using this value on only one page...use viewstate,
if you need it on other pages, then you can use session. code i posted
above is in c#. translation is fairly easy.

May 25 '06 #4
Thanks all... As sloan guessed, I'm a Java guy that's been thrown in to
the deep end of the ASP.NET pool without knowing how to swim.

But I don't exactly find the translation easy... probably because it's
a bit of a paradigm shift and Googling the terms: property, viewstate,
and vb isn't yeilding results I think I can use.

http://www.codeguru.com/csharp/.net/...le.php/c11971/
is the same thing as above and in C#

Either I've translated from C# incorrectly or the the post back still
over writes what was sent to the setter.

If I got this working and I actually want to work with the data, do I
do that by typing this LastName.Get (sloan's example) or GetName
(Jimi200478's example)?

May 25 '06 #5

Are you trying to Display the value in the Page (somewhere in the html
output)?

Or are you trying to use it in the code_behind page (where the actualy
vb.net code resides)

?


"Adam Sandler" <co****@excite.com> wrote in message
news:11*********************@g10g2000cwb.googlegro ups.com...
Thanks all... As sloan guessed, I'm a Java guy that's been thrown in to
the deep end of the ASP.NET pool without knowing how to swim.

But I don't exactly find the translation easy... probably because it's
a bit of a paradigm shift and Googling the terms: property, viewstate,
and vb isn't yeilding results I think I can use.

http://www.codeguru.com/csharp/.net/...le.php/c11971/
is the same thing as above and in C#

Either I've translated from C# incorrectly or the the post back still
over writes what was sent to the setter.

If I got this working and I actually want to work with the data, do I
do that by typing this LastName.Get (sloan's example) or GetName
(Jimi200478's example)?

May 25 '06 #6
sloan wrote:
Are you trying to Display the value in the Page (somewhere in the html
output)?

Or are you trying to use it in the code_behind page (where the actualy
vb.net code resides)


In the code behind... In the past 15 minutes I tried this in my class
declaration:

Private _myname As String

Public Property MyName() As String
Get
Return _myname
End Get
Set(ByVal value As String)
_myname = value
End Set
End Property

And then in my event handlers:

Protected Sub Button2_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button2.Click
MyName = Me.GridView1.SelectedRow.Cells(2).Text
End Sub

Protected Sub Button4_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button4.Click
MsgBox(MyName)
End Sub

And I get the same result... an empty string returned.

Thanks for your help thus far!!!

May 25 '06 #7
Adam Sandler:

You are going to have to store "MyName" in either ViewState or Session
if you want it to survive a PostBack. Both mine and Sloan's examples
are the same, just different syntax. Sloans example demonstrates how to
use a property in .NET, but it doesnt answer base question which is
"how do i make the value survive a postback". The answer to that
question is viewstate or session. if you do want to have a variable on
your page called myname, you will have to do something like this:

in C#:

private string _MyName;

public string MyName
{
get
{
_MyName = ViewState["MyName"].ToString();
return _MyName;
}
set
{
_MyName = value;
ViewState["MyName"] = _MyName;
}
}

if the property is followed by an equals sign, then it knows to "set"
the value. if it is called without an equals sign, the property knows
to "get" the value. see below:

Setting MyName :

MyName = "John"

Getting MyName :

MsgBox(MyName)

Truthfully, at the end of it all, it doesnt matter how you do it, all
that matters is that you use viewstate or session to keep your value
alive. well, good luck!

May 26 '06 #8

Jimi200478 wrote:
Adam Sandler:

You are going to have to store "MyName" in either ViewState or Session
if you want it to survive a PostBack. Both mine and Sloan's examples
are the same, just different syntax. Sloans example demonstrates how to
use a property in .NET, but it doesnt answer base question which is
"how do i make the value survive a postback". The answer to that
question is viewstate or session. if you do want to have a variable on
your page called myname, you will have to do something like this:

in C#:

private string _MyName;

public string MyName
{
get
{
_MyName = ViewState["MyName"].ToString();
return _MyName;
}
set
{
_MyName = value;
ViewState["MyName"] = _MyName;
}
}

if the property is followed by an equals sign, then it knows to "set"
the value. if it is called without an equals sign, the property knows
to "get" the value. see below:

Setting MyName :

MyName = "John"

Getting MyName :

MsgBox(MyName)

Truthfully, at the end of it all, it doesnt matter how you do it, all
that matters is that you use viewstate or session to keep your value
alive. well, good luck!

Jimi... thatnks for the help. Here's what I have so far...

Private _MyName As String

Public Property MyName() As String
Get
_MyName = Me.ViewState(MyName).ToString
End Get
Set(ByVal value As String)
_MyName = value
Me.ViewState(MyName) = _MyName
End Set
End Property

The compiler doesn't like this code above but it will run. However,
the first time I click the button which has this in its handler:

MyName = someComponent.Text

It throws an error with "The string parameter 'key' cannot be null or
empty." as the message. This is why I assumed earlier that my
translation from C# to VB was incorrect. I'm positing it here now so
you can indeed see that I am very interested in what you have posted
but for whatever reason, I haven't been able to successfully implement
your advice.

Thanks!

May 26 '06 #9

Yeah... I wrote an example up before seeing Jimi's example.

But here is mine... Same bat time, same bat channel.

ASPX
<HTML>
<HEAD>
<title>ViewStateTest</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5"
name="vs_targetSchema">
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<P><asp:textbox id="TextBox1" runat="server"></asp:textbox>&nbsp;(Put a
Number In
Here, and click the Button Below)</P>
<P><asp:button id="Button1" runat="server"
Text="ButtonONE"></asp:button></P>
<P><asp:button id="Button2" runat="server" Text="ButtonTWO"
Visible="False"></asp:button></P>

</form>
</body>
</HTML>
..cs code behind:
public int SelectedRecordID

{

get

{

if (ViewState["SelectedRecordID"] != null)

return Convert.ToInt32(ViewState["SelectedRecordID"]);

else

return -1;

}

set

{

ViewState["SelectedRecordID"] = value;

}

}

private void Button1_Click(object sender, System.EventArgs e)

{
int whatsMyValue = this.SelectedRecordID;

this.SelectedRecordID = int.Parse(this.TextBox1.Text);

this.Button1.Visible = false;

this.Button2.Visible = true;

}

private void Button2_Click(object sender, System.EventArgs e)

{

int whatsMyValue = this.SelectedRecordID;

this.SelectedRecordID = int.Parse(this.TextBox1.Text);

}

private void Page_Load(object sender, System.EventArgs e)

{

// Put user code to initialize the page here

if (!Page.IsPostBack)

{

this.SelectedRecordID = -999; // use -999 for the PageLoad

}

}
"Jimi200478" <JM*********@gmail.com> wrote in message
news:11**********************@i40g2000cwc.googlegr oups.com...
Adam Sandler:

You are going to have to store "MyName" in either ViewState or Session
if you want it to survive a PostBack. Both mine and Sloan's examples
are the same, just different syntax. Sloans example demonstrates how to
use a property in .NET, but it doesnt answer base question which is
"how do i make the value survive a postback". The answer to that
question is viewstate or session. if you do want to have a variable on
your page called myname, you will have to do something like this:

in C#:

private string _MyName;

public string MyName
{
get
{
_MyName = ViewState["MyName"].ToString();
return _MyName;
}
set
{
_MyName = value;
ViewState["MyName"] = _MyName;
}
}

if the property is followed by an equals sign, then it knows to "set"
the value. if it is called without an equals sign, the property knows
to "get" the value. see below:

Setting MyName :

MyName = "John"

Getting MyName :

MsgBox(MyName)

Truthfully, at the end of it all, it doesnt matter how you do it, all
that matters is that you use viewstate or session to keep your value
alive. well, good luck!

May 26 '06 #10
you're almost there. you just need to change the code a little bit:

change the code in the get to:
*notice that the viewstate key is a string

_MyName = Me.ViewState("MyName").ToString
Return _MyName

change the code in the set to:
*notice that the viewstate key is a string

_MyName = value
Me.ViewState("MyName") = _MyName

May 26 '06 #11
That was it... Thanks gents for the help!!!!

May 26 '06 #12
you're very welcome. Happy Programming.

May 26 '06 #13

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
2138
by: Lars Plessmann | last post by:
Problem: I try to store data in a objects field and read it out again. Sounds easy, yeah. But its a bit tricky here.... ;-) This is the class Customer.php with some setter and getter functions...
3
18062
by: Kiwi | last post by:
Hello. I know a getter can return other thing than a field. I know a setter can do more things than setting a field. I know there are "setter only" cases and "getter only" cases. I do use...
4
5525
by: Jimbo | last post by:
I am sort of new to C#. Currently have a private property called "_name" in a class. I have written a public getter and setter routine for it called "Name". Currently, the getter for the...
7
1479
by: none | last post by:
I'm trying to implement a simple repeateable property mechansism so I don't have to write accessors for every single instance variable I have. ------------ classMyObject: def __init__ (self):...
1
1912
by: Steve | last post by:
I generate C# webservices proxy code from WSDL file, it turns out the classes generated have public member variables and no getter/setter methods as follows, and I am able to get data when...
3
99377
by: Martin Pöpping | last post by:
Hello, I´m coming from the Java World. Here Programmers often use (like in C++?) getter and setter methods. F.e.: class Mirror{ private int width_;
2
1394
by: Amie | last post by:
Hi, I have an atlas related question.. I have a web form that submits the information to a web service method, and it's done thru Atlas by binding the web methods to client functions. It...
0
1184
by: shyamg | last post by:
Hi all i am newly add new Attribute "name" in strutshtml- tld file but its asking for setter method for attribute. where can add the setter and getter. Thanks. ss.
13
3026
by: globalrev | last post by:
wassup here? 7 Traceback (most recent call last): File "C:\Python25\myPrograms\netflix\netflix.py", line 22, in <module> print cust1.getID() AttributeError: 'NoneType' object has no...
0
7242
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
7138
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
7355
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
7423
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
1
7081
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
5668
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
3225
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The...
0
1576
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated ...
0
447
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.