Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > Maintaining View State For Dynamically Created Controls

Reply
Thread Tools

Maintaining View State For Dynamically Created Controls

 
 
=?Utf-8?B?RWFybCBUZWlncm9i?=
Guest
Posts: n/a
 
      10-07-2004
I am building a custom control that I want to server as a container for child
controls that can be dynamically added to this control. I can persist the
child controls that are added to my custom control but can to get them to
retain view state.

Below is a striped down version of my control. It exposes one property of
type System.Web.UI.Control that the containing page my set with a dynamically
created control My custom control will then add it to its control tree and
render it to the display. The information need to recreate the control is
stored in a System.Web.UI.Triplet object. On postback, the child control is
reinstanced and given its origonal id and added to the Custom Controls
control tree and rendered to the display.

The only problem is that the ViewState for the child control is not being
retained.

Has anyone solved this puzzle???

Thanks for your help

Earl

CUSTOM WEB SERVER CONTROL

Imports System.ComponentModel
Imports System.Web.UI

<ToolboxData("<{0}:TabMenuA runat=server></{0}:TabMenuA>")> Public Class
ContainerControl
Inherits System.Web.UI.WebControls.WebControl

#Region "Declarations"

Private _ChildControlToRender As System.Web.UI.Control

#End Region

#Region "Properties"

<Bindable(True), Category("Data"), DefaultValue("")> Public Property
ChildControlToRender() As System.Web.UI.Control
Get
Return _ChildControlToRender
End Get
Set(ByVal Value As System.Web.UI.Control)
_ChildControlToRender = Value
End Set
End Property

#End Region

#Region "Methods"

Protected Overrides Sub CreateChildControls()
If Not Page.IsPostBack Then
Controls.Add(_ChildControlToRender)
End If

End Sub


Protected Overrides Sub LoadViewState(ByVal savedState As Object)
Dim objViewStates() As Object
objViewStates = CType(savedState, Object())
Dim Trip As System.Web.UI.Triplet
Trip = objViewStates(1)
_ChildControlToRender = Activator.CreateInstance(CType(Trip.Second,
System.Type))
_ChildControlToRender.ID = Trip.First
Me.Controls.Add(_ChildControlToRender)
MyBase.LoadViewState(objViewStates(0))
End Sub

Protected Overrides Function SaveViewState() As Object
Dim objViewStates(1) As Object
Dim Trip As New System.Web.UI.Triplet
Trip.First = _ChildControlToRender.ID
Trip.Second = _ChildControlToRender.GetType
Trip.Third = Me.ID
objViewStates(1) = Trip
objViewStates(0) = MyBase.SaveViewState()
Return objViewStates
End Function

#End Region
End Class

CONTAINING PAGE CODE

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
If Not Page.IsPostBack Then
Dim myButton As Button = New Button
myButton.Text = "Hello1"
myButton.ID = "ButtonA"
myButton.EnableViewState = True
ContainerControl1.ChildControlToRender = myButton
End If

End Sub



 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Affecting a dynamically created drop down from another dynamically created drop down. msimmons ASP .Net 0 07-16-2009 03:17 PM
Programmatically created controls not maintaining their state mark.norgate@gmail.com ASP .Net 0 07-31-2006 04:12 PM
Maintaining state with a dynamically created TemplateColumn =?Utf-8?B?UGV0ZSBNb3Nz?= ASP .Net 2 04-08-2006 06:39 PM
Maintaining state in programmatically created composite user controls mark.norgate@gmail.com ASP .Net Building Controls 3 03-23-2006 11:20 AM
Maintaining View State For Dynamically Created Controls Earl Teigrob ASP .Net Building Controls 0 10-07-2004 08:09 PM



Advertisments