collection property's items in inner tags
Messages   Related Types
This message was discovered on ASPFriends.com 'aspngcontrolscs' list.


Andy Smith
SSBoYXZlIGEgY29udHJvbCB0aGF0IEkgd2FudCB0byBoYXZlIHB1dCBpdCdzIFNldHRpbmdzIGNv
bGxlY3Rpb24gcHJvcGVydHkgYXMgbmVzdGVkIGlubmVyIHRhZ3MuDQpJIHRob3VnaHQgSSBoYWQg
cHV0IGFsbCB0aGUgcmlnaHQgYXR0cmlidXRlcyBvbiB0aGUgY29udHJvbCwgYnV0IGl0J3Mgbm90
IHNhdmluZyB0aGUgY29sbGVjdGlvbiBhdCBhbGwuDQogDQppcyB0aGVyZSBhbnl0aGluZyBtb3Jl
IEkgaGF2ZSB0byBkbyBiZXlvbmQgdGhpcyBzdHVmZj8NCiANClsNClByb3ZpZGVQcm9wZXJ0eSgi
RGVmYXVsdEJ1dHRvbiIsdHlwZW9mKENvbnRyb2wpKSwNClBhcnNlQ2hpbGRyZW4odHJ1ZSwiU2V0
dGluZ3MiKSwNClBlcnNpc3RDaGlsZHJlbihmYWxzZSkNCl0NCnB1YmxpYyBjbGFzcyBEZWZhdWx0
QnV0dG9ucyA6IFN5c3RlbS5XZWIuVUkuQ29udHJvbCwgSUV4dGVuZGVyUHJvdmlkZXIgew0KDQou
Li4NCg0KWw0KQnJvd3NhYmxlKGZhbHNlKSwNCkRlc2lnbmVyU2VyaWFsaXphdGlvblZpc2liaWxp
dHkoRGVzaWduZXJTZXJpYWxpemF0aW9uVmlzaWJpbGl0eS5Db250ZW50KSwNClBlcnNpc3RlbmNl
TW9kZShQZXJzaXN0ZW5jZU1vZGUuSW5uZXJEZWZhdWx0UHJvcGVydHkpDQpdDQpwdWJsaWMgRGVm
YXVsdEJ1dHRvblNldHRpbmdDb2xsZWN0aW9uIFNldHRpbmdzIHsNCiAgIGdldCB7DQogICAgICBy
ZXR1cm4gc2V0dGluZ3M7DQogICB9DQp9DQoNCiANCg0Kd2h5IGlzbid0IG15IGNvbnRyb2wgc2F2
aW5nIHRoZSBTZXR0aW5ncyBjb2xsZWN0aW9uIGFzIG5lc3RlZCBpbm5lciB0YWdzPw0KDQogDQoN
Cl9fDQpBbmR5IFNtaXRoDQoNCg=
Reply to this message...
 
    
John John
hello the following sample should help you...
It does also answer to the RE: [aspngcontrolscs] collection property in
usercontrol question I think...

//----------------------------------------------------------------
// Copyright (C) 2002 Me
// All rights reserved.
// <author>John Knipper ( <mailto:Click here to reveal e-mail address)>
Click here to reveal e-mail address)</author>
// <creationdate>01/04/2002</creationdate>
// <helpedby>Thanks to Vandana Datye</helpedby>
//----------------------------------------------------------------
using System;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Drawing.Design;

namespace CustomControls
{
public class Employee
{
private String name;
private String title;

public Employee():this ("",""){}

public Employee (String name, String title)
{
this.name = name;
this.title = title;
}
[
NotifyParentProperty(true)
]
public String Name
{
get
{
return name;
}
set
{
name = value;
}
}

[
NotifyParentProperty(true)
]
public String Title
{
get
{
return title;
}
set
{
title = value;
}
}
}

[DefaultProperty("Item")]
public class EmployeeCollection : System.Collections.CollectionBase
{
public void Add(Employee anEmployee)
{
List.Add(anEmployee);
}
public void Remove(int index)
{
// Check to see if there is an Employee at the supplied index.
if (index < Count - 1 && index > 0)
{
List.RemoveAt(index);
}
}
public Employee Item(int Index)
{
// The appropriate item is retrieved from the List object and
// explicitly cast to the Employee type, then returned to the
// caller.
return (Employee) List[Index];
}
}

public class EmployeeCollectionEditor : CollectionEditor
{

public EmployeeCollectionEditor(Type type) : base(type)
{
}

protected override Type CreateCollectionItemType()
{
return typeof(Employee); //you may need to use the fully qualified name
of the type
}
}

[
ParseChildren(true, "Employees"), //needed by the page parser
PersistChildren(false) // Needed by the designer
]
public class CollectionPropertyControl : Control
{
//private ArrayList employees = new ArrayList();
private EmployeeCollection employees = new EmployeeCollection();

[
Editor(typeof(EmployeeCollectionEditor), typeof(UITypeEditor)),
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
NotifyParentProperty(true),
PersistenceMode(PersistenceMode.InnerDefaultProperty)
]
public EmployeeCollection Employees
{
get
{
return employees;
}
}

protected override void CreateChildControls()
{
Table table = new Table();
TableRow htr = new TableRow();

TableHeaderCell hcell1 = new TableHeaderCell();
hcell1.Text = "Name";
htr.Cells.Add(hcell1);

TableHeaderCell hcell2 = new TableHeaderCell();
hcell2.Text = "Title";
htr.Cells.Add(hcell2);

foreach (Employee employee in Employees)
{
TableRow tr = new TableRow();

TableCell cell1 = new TableCell();
cell1.Text = employee.Name;
tr.Cells.Add(cell1);

TableCell cell2 = new TableCell();
cell2.Text = employee.Title;
tr.Cells.Add(cell2);

table.Rows.Add(tr);
}
Controls.Add(table);
}
}
}

-----Original Message-----
From: Andy Smith [mailto:Click here to reveal e-mail address]
Sent: dimanche 4 août 2002 02:19
To: aspngcontrolscs
Subject: collection property's items in inner tags

I have a control that I want to have put it's Settings collection property
as nested inner tags.
I thought I had put all the right attributes on the control, but it's not
saving the collection at all.

is there anything more I have to do beyond this stuff?

[
ProvideProperty("DefaultButton",typeof(Control)),
ParseChildren(true,"Settings"),
PersistChildren(false)
]
public class DefaultButtons : System.Web.UI.Control, IExtenderProvider {

...

[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
PersistenceMode(PersistenceMode.InnerDefaultProperty)
]
public DefaultButtonSettingCollection Settings {
get {
return settings;
}
}

why isn't my control saving the Settings collection as nested inner tags?

__
Andy Smith
Reply to this message...
 
    
Andy Smith
I tried implementing your example in my control, and it is still not writing the collection to the page.
If you or anybody could take a look at my code, i'd really appreciate it.
the full project source is here:
http://www.metabuilders.com/betatools/defaultbuttons.zip

thanks for any help in this area. I really apprciate it.

__
Andy Smith
Keyboard Jockey #3a7-2.78.1

-----Original Message-----
From: John John [mailto:Click here to reveal e-mail address]
Sent: Monday, August 05, 2002 3:21 AM
To: aspngcontrolscs
Subject: [aspngcontrolscs] RE: collection property's items in inner tags

hello the following sample should help you...
It does also answer to the RE: [aspngcontrolscs] collection property in usercontrol question I think...

//----------------------------------------------------------------
// Copyright (C) 2002 Me
// All rights reserved.
// <author>John Knipper ( <mailto:Click here to reveal e-mail address)> Click here to reveal e-mail address)</author>
// <creationdate>01/04/2002</creationdate>
// <helpedby>Thanks to Vandana Datye</helpedby>
//----------------------------------------------------------------
using System;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Drawing.Design;

namespace CustomControls
{
public class Employee
{
private String name;
private String title;

public Employee():this ("",""){}

public Employee (String name, String title)
{
this.name = name;
this.title = title;
}
[
NotifyParentProperty(true)
]
public String Name
{
get
{
return name;
}
set
{
name = value;
}
}

[
NotifyParentProperty(true)
]
public String Title
{
get
{
return title;
}
set
{
title = value;
}
}
}

[DefaultProperty("Item")]
public class EmployeeCollection : System.Collections.CollectionBase
{
public void Add(Employee anEmployee)
{
List.Add(anEmployee);
}
public void Remove(int index)
{
// Check to see if there is an Employee at the supplied index.
if (index < Count - 1 && index > 0)
{
List.RemoveAt(index);
}
}
public Employee Item(int Index)
{
// The appropriate item is retrieved from the List object and
// explicitly cast to the Employee type, then returned to the
// caller.
return (Employee) List[Index];
}
}

public class EmployeeCollectionEditor : CollectionEditor
{

public EmployeeCollectionEditor(Type type) : base(type)
{
}

protected override Type CreateCollectionItemType()
{
return typeof(Employee); //you may need to use the fully qualified name of the type
}
}

[
ParseChildren(true, "Employees"), //needed by the page parser
PersistChildren(false) // Needed by the designer
]
public class CollectionPropertyControl : Control
{
//private ArrayList employees = new ArrayList();
private EmployeeCollection employees = new EmployeeCollection();

[
Editor(typeof(EmployeeCollectionEditor), typeof(UITypeEditor)),
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
NotifyParentProperty(true),
PersistenceMode(PersistenceMode.InnerDefaultProperty)
]
public EmployeeCollection Employees
{
get
{
return employees;
}
}

protected override void CreateChildControls()
{
Table table = new Table();
TableRow htr = new TableRow();

TableHeaderCell hcell1 = new TableHeaderCell();
hcell1.Text = "Name";
htr.Cells.Add(hcell1);

TableHeaderCell hcell2 = new TableHeaderCell();
hcell2.Text = "Title";
htr.Cells.Add(hcell2);

foreach (Employee employee in Employees)
{
TableRow tr = new TableRow();

TableCell cell1 = new TableCell();
cell1.Text = employee.Name;
tr.Cells.Add(cell1);

TableCell cell2 = new TableCell();
cell2.Text = employee.Title;
tr.Cells.Add(cell2);

table.Rows.Add(tr);
}
Controls.Add(table);
}
}
}

-----Original Message-----
From: Andy Smith [mailto:Click here to reveal e-mail address]
Sent: dimanche 4 août 2002 02:19
To: aspngcontrolscs
Subject: collection property's items in inner tags

I have a control that I want to have put it's Settings collection property as nested inner tags.
I thought I had put all the right attributes on the control, but it's not saving the collection at all.

is there anything more I have to do beyond this stuff?

[
ProvideProperty("DefaultButton",typeof(Control)),
ParseChildren(true,"Settings"),
PersistChildren(false)
]
public class DefaultButtons : System.Web.UI.Control, IExtenderProvider {

...

[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
PersistenceMode(PersistenceMode.InnerDefaultProperty)
]
public DefaultButtonSettingCollection Settings {
get {
return settings;
}
}

why isn't my control saving the Settings collection as nested inner tags?

__
Andy Smith
Reply to this message...
 
 
System.Collections.ArrayList
System.Collections.CollectionBase
System.ComponentModel.Design.CollectionEditor
System.ComponentModel.DesignerSerializationVisibility
System.ComponentModel.IExtenderProvider
System.Drawing.Design.UITypeEditor
System.Web.UI.Control
System.Web.UI.MobileControls.List
System.Web.UI.PersistenceMode
System.Web.UI.WebControls.Table
System.Web.UI.WebControls.TableCell
System.Web.UI.WebControls.TableHeaderCell
System.Web.UI.WebControls.TableRow




Ad
MBR BootFX
Best-of-breed application framework for .NET projects, developed by Matthew Baxter-Reynolds and MBR IT
 
 Copyright © Matthew Baxter-Reynolds 2001-2008. '.NET 247 Software Development Services' is a trading style of MBR IT Solutions Ltd.
Contact Us - Terms of Use - Privacy Policy - www.dotnet247.com