When I try just ParseChildren(true) what I get using your example:
<foo:MyControl ... >
<foo:Item1 />
<foo:Item2 />
<foo:Item1 />
<foo:Item2 />
</foo:MyControl>
where <MyCollectionProperty1> and <MyCollectionProperty2> tags are missing. So when I run it it gives me an error someting like <foo:MyControl> does not have property <foo:Item1/>.
Maybe if you have time you can take a look at my code bellow and see what's wrong or what tags I am missing:
---------CONTROL CLASS------------
Imports System.Web.UI
Imports System.ComponentModel
<ParseChildren(True), PersistChildren(False), _
PersistenceMode(PersistenceMode.InnerProperty), _
ToolboxData("<{0}:EmployeeControl runat=server></{0}:EmployeeControl>")> _
Public Class EmployeeControl
Inherits System.Web.UI.WebControls.WebControl
Private _empCollection As New EmployeeCollection
Private _userCollection As New UserCollection
<Category("Custom"), NotifyParentProperty(True), _
PersistenceMode(PersistenceMode.InnerDefaultProperty), _
DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
Public Property UserInfos() As UserCollection
Get
Return _userCollection
End Get
Set(ByVal Value As UserCollection)
_userCollection = Value
End Set
End Property
<Category("Custom"), NotifyParentProperty(True), _
PersistenceMode(PersistenceMode.InnerDefaultProperty), _
DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
Public Property EmployeeInfos() As EmployeeCollection
Get
Return _empCollection
End Get
Set(ByVal Value As EmployeeCollection)
_empCollection = Value
End Set
End Property
End Class
-----------COLLECTION CLASSES-------------
Imports System.ComponentModel
Imports System.Web.UI
Public Class UserCollection
Inherits CollectionBase
Default Public Property Item(ByVal index As Integer) As UserInfo
Get
Return CType(List(index), UserInfo)
End Get
Set(ByVal Value As UserInfo)
List(index) = Value
End Set
End Property
Public Function Add(ByVal value As UserInfo) As Integer
Return List.Add(value)
End Function 'Add
Public Function IndexOf(ByVal value As UserInfo) As Integer
Return List.IndexOf(value)
End Function 'IndexOf
Public Sub Insert(ByVal index As Integer, ByVal value As UserInfo)
List.Insert(index, value)
End Sub 'Insert
Public Sub Remove(ByVal value As UserInfo)
List.Remove(value)
End Sub 'Remove
End Class
-----------------------
Imports System.ComponentModel
Imports System.Web.UI
Public Class EmployeeCollection
Inherits CollectionBase
Default Public Property Item(ByVal index As Integer) As EmployeeInfo
Get
Return CType(List(index), EmployeeInfo)
End Get
Set(ByVal Value As EmployeeInfo)
List(index) = Value
End Set
End Property
Public Function Add(ByVal value As EmployeeInfo) As Integer
Return List.Add(value)
End Function 'Add
Public Function IndexOf(ByVal value As EmployeeInfo) As Integer
Return List.IndexOf(value)
End Function 'IndexOf
Public Sub Insert(ByVal index As Integer, ByVal value As EmployeeInfo)
List.Insert(index, value)
End Sub 'Insert
Public Sub Remove(ByVal value As EmployeeInfo)
List.Remove(value)
End Sub 'Remove
End Class
------------TYPE CLASSES----------------
Imports System.ComponentModel
Public Class UserInfo
Public strFirstName As String = ""
Public strLastName As String = ""
Public iUserId As Integer = 0
Property [FirstName]() As String
Get
Return strFirstName
End Get
Set(ByVal Value As String)
strFirstName = Value
End Set
End Property
Property [LastName]() As String
Get
Return strLastName
End Get
Set(ByVal Value As String)
strLastName = Value
End Set
End Property
Property [UserID]() As Integer 'UserIDCollection
Get
Return iUserId
End Get
Set(ByVal Value As Integer) 'UserIDCollection)
iUserId = Value
End Set
End Property
End Class
----------------
Imports System.ComponentModel
Public Class EmployeeInfo
Private strFirstName As String = ""
Private strLastName As String = ""
Private iEmpId As Integer = 0
Property [FirstName]() As String
Get
Return strFirstName
End Get
Set(ByVal Value As String)
strFirstName = Value
End Set
End Property
Property [LastName]() As String
Get
Return strLastName
End Get
Set(ByVal Value As String)
strLastName = Value
End Set
End Property
Property [EmployeeId]() As Integer
Get
Return iEmpId
End Get
Set(ByVal Value As Integer)
iEmpId = Value
End Set
End Property
End Class
---------------------------
Your help is greately appriciated.
Thanks and Regards