ASP.NET Custom control with collection property

Discussion in 'ASP .Net' started by -=Chris=-, May 22, 2004.

  1. -=Chris=-

    -=Chris=- Guest

    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(" >> ");

    }

    }

    }

    }
     
    -=Chris=-, May 22, 2004
    #1
    1. Advertisements

  2. -=Chris=-

    Natty Gur Guest

    Natty Gur, May 23, 2004
    #2
    1. Advertisements

  3. -=Chris=-

    -=Chris=- Guest

    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!
     
    -=Chris=-, May 23, 2004
    #3
    1. Advertisements

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 (here). After that, you can post your question and our members will help you out.