![]() |
|
|
|||||||
![]() |
ASP Net - Custom Control with a complex property type |
|
|
Thread Tools | Search this Thread |
|
|
#1 |
|
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 |
|
|
|
|
#2 |
|
Posts: n/a
|
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:%... >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? > |
|