ASP.NET Custom control with collection property


C

-=Chris=-

Hello all,

I've designed a custom bread crumb control for several of my asp.net
projects. The default property of this control is a custom
HyperLinkCollection I've created, which contains, you guessed it, HyperLink
objects. All of it works great if I create/assign the links at runtime in
code. I'd like to be able to assign links at design time, which is possible
using the properties window, but currently, they do not carry over to the
runtime. I'm trying to figure out how to make this happen. Sample code for
the small breadcrumb class is listed below. I would greatly appreciate any
input.

using System;

using System.Collections;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.ComponentModel;

namespace Com.L3Software.Web.Controls {

/// <summary>

/// Summary description for Breadcrumb.

/// </summary>

[DefaultProperty("Crumbs"),

Designer("Com.L3Software.Web.Controls.BreadcrumbDesigner"),

ToolboxData("<{0}:Breadcrumb runat=server></{0}:Breadcrumb>"),

Description("A reusable breadcrumb component")]

public class Breadcrumb : System.Web.UI.WebControls.WebControl,
INamingContainer {

private HyperLinkCollection mCrumbs;

[Bindable(false),

Category("Appearance"),

Description("An ordered list of links to be displayed")]

public HyperLinkCollection Crumbs {

get {

return this.mCrumbs;

}

}

public Breadcrumb() {

this.mCrumbs = new HyperLinkCollection();

}

/// <summary>

/// Render this control to the output parameter specified.

/// </summary>

/// <param name="output"> The HTML writer to write out to </param>

protected override void Render(HtmlTextWriter output) {

output.Write("You are here: ");

for (int i=0; i<this.mCrumbs.Count; i++) {

HyperLink l = (HyperLink)this.mCrumbs;

l.RenderControl(output);

if (i < this.mCrumbs.Count-1)

output.Write(" >> ");

}

}

}

}
 
Ad

Advertisements

Ad

Advertisements

C

-=Chris=-

Thanks. It took a little time to figure it out, since the code changes
didn't show up right away in the designers I'd already created, but got it
figured out. Thanks again!
 

Top