Tuesday, March 13, 2012

TextBox and Property

Hello,
I am working on Library which will include various controls.
One of these controls has a TextBox.
I am using a property named Value to define the TextBox text:
' Value
Private _Value As String
Public Property Value() As String
Get
Return _Value
End Get
Set(ByVal value As String)
_Value = value
End Set
End Property ' Value
And the TextBox Init event is the following:
Private Sub tbText_Init(ByVal sender As Object, ByVal e As
EventArgs) Handles tbText.Init
tbText.ID = "tbText"
tbText.Text = _Value
End Sub
I added this control to a page and defined its value to "Hello".
I also added a button to the page that when clicked basically does
Response.Write(MyControl.Value)
What happens is that when I change the TextBox text to "Goodbye" and
click the button the text that Response.Write outputs is "Hello".
Why isn't the property returning the new value?
What is the right way to do this?
Thanks,
MiguelHowdy,
This is because you change the text of the text box in the Init event.
Button raises its Click event between Load and PreRender page's events
meaning after you take the value of the Value property. In addition, if the
value is set through the code or data binding its value will be lost because
it's not stored in the viewstate. You need to simplify your code to:
Public Property Value() As String
Get
Return tbText.Text
End Get
Set(ByVal value As String)
tbText.Text = value
End Set
End Property ' Value
Done
hope it helps
--
Milosz
"shapper" wrote:

> Hello,
> I am working on Library which will include various controls.
> One of these controls has a TextBox.
> I am using a property named Value to define the TextBox text:
> ' Value
> Private _Value As String
> Public Property Value() As String
> Get
> Return _Value
> End Get
> Set(ByVal value As String)
> _Value = value
> End Set
> End Property ' Value
> And the TextBox Init event is the following:
> Private Sub tbText_Init(ByVal sender As Object, ByVal e As
> EventArgs) Handles tbText.Init
> tbText.ID = "tbText"
> tbText.Text = _Value
> End Sub
> I added this control to a page and defined its value to "Hello".
> I also added a button to the page that when clicked basically does
> Response.Write(MyControl.Value)
> What happens is that when I change the TextBox text to "Goodbye" and
> click the button the text that Response.Write outputs is "Hello".
> Why isn't the property returning the new value?
> What is the right way to do this?
> Thanks,
> Miguel
>

0 comments:

Post a Comment