Panel Controls inside a custom server control in ASP.NET

C

Charles Zhang

I want to create a simple server control that does thing like:

<Mc:CollapsibleControl TitlePanelID="panel1" BodyPanelID="Panel2">
<asp:panel ID="panel1">
...
</asp:panel>

<asp:panel ID="panel2">
...
</asp:pane2>
</Mc:CollaspableControl>

I based my custom web server control on the example you can find on:
http://msdn2.microsoft.com/en-us/library/ms178654.aspx

I defined a "Panels" property that return an array of "Panel" class.

What should I change to make it work? Thanks

Charles Zhang
 
W

Walter Wang [MSFT]

Hi Charles,

You need to apply ParseChildrenAttribute(false) on your custom control to
let the default ControlBuilder to interpret the content within your
control's begin and end tags. The parsed objects are added to your control
via the AddParsedSubObject method of your control. By default, the
AddParsedSubObject method expect server controls and adds these parsed
controls into your control's Controls collection as child controls.

Since you're only wanting Panel controls added to your controls collection,
you can do this by:

[ParseChildren(false)]
public class C1 : WebControl
{
private List<Panel> m_panels = new List<Panel>();

protected override void AddParsedSubObject(object obj)
{
if (obj is Panel)
{
Panel p = (Panel)obj;
m_panels.Add(p);
Controls.Add(p);
}
}

public List<Panel> Panels
{
get { return m_panels; }
}
}

Sincerely,
Walter Wang ([email protected], remove 'online.')
Microsoft Online Community Support

==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications. If you are using Outlook Express, please make sure you clear the
check box "Tools/Options/Read: Get 300 headers at a time" to see your reply
promptly.

Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://msdn.microsoft.com/subscriptions/support/default.aspx.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.
 
C

Charles Zhang

I got the problem resolved. The code I wrote is working. However, the
web page does not use the new assembly until I restarted the web site.
To avoid the problem during debugging, I moved the custom user control
to "App_Code".
 
W

Walter Wang [MSFT]

Hi Charles,

Thanks for the update.

Is your web application migrated from ASP.NET 1.1? Or, are you using the
Web Application Project add-on for VS2005?

As for VS2005, it's recommened to put classes in the App_Code folder.

Regards,
Walter Wang ([email protected], remove 'online.')
Microsoft Online Community Support

==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,764
Messages
2,569,567
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top