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:
' ValuePrivate _ValueAs String Public Property Value()As String Get Return _ValueEnd Get Set(ByVal valueAs String) _Value = valueEnd Set End Property' Value
And the TextBox Init event is the following:
Private Sub tbText_Init(ByVal senderAs Object,ByVal eAs EventArgs)Handles tbText.Init tbText.ID ="tbText" tbText.Text = _ValueEnd 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
You have to use ViewState. means you have to save your property value in the ViewState, so that when page postbacks all the values are retrived from viewstate.
Public Property Value()As String
Get
Return ViewState["Value"]
End Get
Set(ByVal valueAs String)
ViewState["Value"] = value
End Set
End Property' Value
I hope this will resolve your problem.
Let me know in case of any further queries
So I will not need the variable _Value in this case?
And is this the only way to do this?
Thanks,
Miguel
Hello,
I also tried the following:
Private _ValueAs String Public Property Value()As String Get Return tbText.TextEnd Get Set(ByVal valueAs String) _Value = valueEnd Set End Property' Value
This works. How?
Should I use this way or the ViewState?
Thanks,
Miguel
No, you can directly save your values in ViewState.
I don't think there may be any other way, because whenever your form is posted on server all the values are stored in ViewState.
I hope it would help!
shapper:
Hello,
I also tried the following:
Private _ValueAs String Public Property Value()As String Get Return tbText.TextEnd Get Set(ByVal valueAs String) _Value = valueEnd Set End Property' ValueThis works. How?
Should I use this way or the ViewState?
Thanks,
Miguel
Yes because Textbox.Text is stored in ViewState
Just one more question. When using the code you suggested:
Private _ValueAs String Public Property Value()As String Get Return ViewState("Value")End Get Set(ByVal valueAs String) ViewState("Value") = valueEnd Set End Property' Value
How should I know define the initial value of my textbox?
In this moment I have:
MyTextBox.Text = _Value
Of course I could use
MyTextBox.Text =Me.Value
However, sometime ago, also in Microsoft forum there was a thread that I started weather in the code should I use ... = Me.PropertyName or ... = _PropertyName
It seems most people use the variable _PropertyName.
How should I do it?
I suppose usingMyTextBox.Text = ViewState("Value")
isn't a very nice way to do it.
Anyway, just looking for a standard way (or the closest to it) to do this.
Thanks,
Miguel
Hi ,
THis problem is due to IsPostBack property. when you intially assigned the value Hello value check the property
If Not Page.IsPostBack Then
assign your assign intial value to control...
TextBox1.Text = "sample value"
End If
Public Property Value() As String
Get
Dim viewState As Object = ViewState("Value")
If viewState Is Nothing Then
' Return your default value here instead of an empty string
Return String.Empty
Else
Return CStr(viewState)
End If
End Get
Set(ByVal value As String)
ViewState["Value"] = value
End Set
End Property
NC...
0 comments:
Post a Comment