Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   ASP .Net (http://www.velocityreviews.com/forums/f29-asp-net.html)
-   -   Custom Control with a complex property type (http://www.velocityreviews.com/forums/t119629-custom-control-with-a-complex-property-type.html)

Jeremy Chapman 02-14-2006 11:08 PM

Custom Control with a complex property type
 
I have a property will an array of webcontrols.

The control features a custom property editor which can add and remove web
controls to the array, but how do I persist the informtion by serializing it
to the aspx page?

For example, right now, here is what the html looks like when I drag my
control on to the page and add some web controls to the ControlList
property:

<myasp:MyControl id="MyControl6" runat="server" Height="32px" Width="152px"
ControlList="WebControl[] Array"></myasp:MyControl>

What I want is for the ControlList property to serialize something like:

<myasp:MyControl id="MyControl6" runat="server" Height="32px" Width="152px">
<ControlList>
<asp:linkbutton id="LinkButton1"
runat="server">LinkButton</asp:linkbutton>
<asp:imagebutton id="ImageButton1" runat="server"></asp:imagebutton>
<asp:button id="Button1" runat="server" Text="Button"></asp:button>
<asp:hyperlink id="HyperLink1"
runat="server">HyperLink</asp:hyperlink>
<asp:label id="Label1" runat="server">Label</asp:label>
</ControlList>
</myasp:MyControl>

Is this possible?



Jeremy Chapman 02-15-2006 12:35 AM

Re: Custom Control with a complex property type
 
I've solved the first issue by adding the following attribute to my custom
property:

[DesignerSerializationVisibility(DesignerSerializat ionVisibility.Content),
NotifyParentProperty(true),
PersistenceMode(PersistenceMode.InnerProperty)]

This causes the html in my aspx page to look like:

<myasp:MyControl id="MyControl1" runat="server" Width="88px" Height="266px">
<ControlList>
<asp:Button ID="frmControlButton0"></asp:Button>
</ControlList>
</myasp:MyControl>

But now, if I close my web form and re-open it, Visual studio can't create
the control on my page, I get an error '' could not be set on property
ControlList. What does this mean?

Here is the relevant code to my control:

[DefaultProperty("ControlList"),
ToolboxData("<{0}:MyControl runat=server></{0}:MyControl>")]
public class MyControl : System.Web.UI.WebControls.WebControl
{
private System.Web.UI.WebControls.WebControl[] pControls_m = null;

[Category("Appearance"),DefaultValue(""),
Editor(typeof(ControlListEditor),
typeof(System.Drawing.Design.UITypeEditor))]
[DesignerSerializationVisibility(DesignerSerializat ionVisibility.Content),
NotifyParentProperty(true),
PersistenceMode(PersistenceMode.InnerProperty)]
public System.Web.UI.WebControls.WebControl[] ControlList
{
get
{
return pControls_m;
}
set
{
pControls_m = value;
}
}
}


"Jeremy Chapman" <please@Idontlikespam> wrote in message
news:%23yWPbubMGHA.536@TK2MSFTNGP09.phx.gbl...
>I have a property will an array of webcontrols.
>
> The control features a custom property editor which can add and remove web
> controls to the array, but how do I persist the informtion by serializing
> it to the aspx page?
>
> For example, right now, here is what the html looks like when I drag my
> control on to the page and add some web controls to the ControlList
> property:
>
> <myasp:MyControl id="MyControl6" runat="server" Height="32px"
> Width="152px" ControlList="WebControl[] Array"></myasp:MyControl>
>
> What I want is for the ControlList property to serialize something like:
>
> <myasp:MyControl id="MyControl6" runat="server" Height="32px"
> Width="152px">
> <ControlList>
> <asp:linkbutton id="LinkButton1"
> runat="server">LinkButton</asp:linkbutton>
> <asp:imagebutton id="ImageButton1"
> runat="server"></asp:imagebutton>
> <asp:button id="Button1" runat="server" Text="Button"></asp:button>
> <asp:hyperlink id="HyperLink1"
> runat="server">HyperLink</asp:hyperlink>
> <asp:label id="Label1" runat="server">Label</asp:label>
> </ControlList>
> </myasp:MyControl>
>
> Is this possible?
>





All times are GMT. The time now is 06:54 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.