/// <summary>
        /// Effectue l'affichage du controle
        /// </summary>
        /// <param name="writer"></param>
        protected override void Render(System.Web.UI.HtmlTextWriter writer)
        {
            nbRendered = 0;

            writer.Write("<ul");
            if (!string.IsNullOrEmpty(CssClass))
            {
                writer.Write(" class='");
                writer.Write(CssClass);
                writer.Write("'");
            }
            if (Style != null && Style.Count > 0)
            {
                writer.Write(" style='");
                writer.Write(Style);
                writer.Write("'");
            }
            writer.Write(">");

            ECommercePage    pg  = Page as ECommercePage;
            ContexteProvider prv = ECommerceServer.Contexte;

            ContexteBreadCrumbItem[] cur = prv.BreadCrumbItems;
            if (cur.Length == 0)
            {
                if (UsePageTitleIfEmpty && pg != null && !string.IsNullOrEmpty(pg.PageName))
                {
                    if (!string.IsNullOrEmpty(Header))
                    {
                        RenderHeader(writer);
                    }
                    if (pg != null && pg.TypePage != ECommercePageType.HomePage)
                    {
                        RenderHomeLink(writer, true);
                    }
                    RenderNonClickable(writer, pg.PageName, null);
                }
                else if (AlwaysShowHome)
                {
                    if (!string.IsNullOrEmpty(Header))
                    {
                        RenderHeader(writer);
                    }
                    if (pg != null && pg.TypePage != ECommercePageType.HomePage)
                    {
                        RenderHomeLink(writer, true);
                    }
                }
            }
            else
            {
                if (!string.IsNullOrEmpty(Header))
                {
                    RenderHeader(writer);
                }
                if (pg != null && pg.TypePage != ECommercePageType.HomePage)
                {
                    RenderHomeLink(writer, true);
                }

                for (int i = 0; i < (cur.Length - 1); i++)
                {
                    RenderBreadCrumb(writer, cur[i]);
                }

                if (cur.Length > 0)
                {
                    if (LastIsClickable)
                    {
                        RenderBreadCrumb(writer, cur[cur.Length - 1]);
                    }
                    else
                    {
                        RenderNonClickable(writer, cur[cur.Length - 1].Label, cur[cur.Length - 1].Url);
                    }
                }
            }
            writer.Write("</ul>");
        }
        /// <summary>
        /// Effectue le rendu du controle
        /// </summary>
        /// <param name="writer"></param>
        protected override void Render(System.Web.UI.HtmlTextWriter writer)
        {
            ECommercePage    pg  = Page as ECommercePage;
            ContexteProvider prv = ECommerceServer.Contexte;

            writer.Write("<script type='application/ld+json'>{ \"@context\": \"http://schema.org\", \"@type\": \"BreadcrumbList\",");
            writer.Write("\"itemListElement\": ");

            List <ContexteBreadCrumbItem> cur   = new List <ContexteBreadCrumbItem>(pg.GetBreadCrumb());
            List <BreadCrumbItemJson>     items = new List <BreadCrumbItemJson>();

            if (cur.Count == 1 && string.IsNullOrEmpty(cur[0].Label))
            {
                if (!string.IsNullOrEmpty(pg.PageName))
                {
                    var j = cur[0];
                    j.Url   = Page.Request.RawUrl;
                    j.Label = pg.PageName;
                }
            }
            else if (cur.Count == 0)
            {
                if (!string.IsNullOrEmpty(pg.PageName))
                {
                    var j = new ContexteBreadCrumbItem()
                    {
                        Url   = Page.Request.RawUrl,
                        Label = pg.PageName
                    };
                    cur.Add(j);
                }
            }
            var it = new BreadCrumbItemJson()
            {
                type     = "ListItem",
                position = items.Count + 1,
                item     = new Item()
                {
                    id   = ECommerceServer.CurrentSite.UrlPrincipale,
                    name = "Accueil",
                }
            };

            items.Add(it);

            foreach (var c in cur)
            {
                it = new BreadCrumbItemJson()
                {
                    type     = "ListItem",
                    position = items.Count + 1,
                    item     = new Item()
                    {
                        id   = ResolveUrl(c.Url),
                        name = c.Label
                    }
                };

                if (it.item.id.StartsWith("/"))
                {
                    it.item.id = ECommerceServer.CurrentSite.UrlPrincipale + it.item.id.Substring(1);
                }

                items.Add(it);
            }

            string s = CPointSoftware.Equihira.Business.Common.JsonHelper.Serialize(items);

            writer.Write(s);
            writer.Write("}</script>");
        }
        /// <summary>
        /// Effectue le databinding vers l'objet de données
        /// </summary>
        public virtual void BindTo(object o)
        {
            if (o == null)
            {
                return;
            }
            if (o is MarquesDS.catalog_marquesRow)
            {
                MarquesDS.catalog_marquesRow r = o as MarquesDS.catalog_marquesRow;
                if (!string.IsNullOrEmpty(TextFormat))
                {
                    this.Text = string.Format(TextFormat, r.mar_libelle);
                }
                else
                {
                    this.Text = r.mar_libelle;
                }
                switch (TypeLien)
                {
                case TypeMarqueLink.PagePersoOuMoteur:
                    try
                    {
                        if (r.Table.Columns.Contains("mar_url_redirection") && !r.IsNull("mar_url_redirection"))
                        {
                            this.NavigateUrl = ResolveUrl(r["mar_url_redirection"] as string);
                        }
                    }
                    catch
                    {
                        goto case TypeMarqueLink.MoteurDeRecherche;
                    }
                    break;

                case TypeMarqueLink.MoteurDeRecherche:
                    this.NavigateUrl = ECommerceServer.Contexte.GetSearchPagePath(-1,
                                                                                  Guid.Empty,
                                                                                  r.mar_pk,
                                                                                  null,
                                                                                  null,
                                                                                  true);
                    break;

                case TypeMarqueLink.SiteWeb:
                    break;
                }
            }
            else if (o is RechercheMarque)
            {
                RechercheMarque r = o as RechercheMarque;
                if (!string.IsNullOrEmpty(TextFormat))
                {
                    this.Text = string.Format(TextFormat, r.Label);
                }
                else
                {
                    this.Text = r.Label;
                }
                this.NavigateUrl = ECommerceServer.Contexte.GetSearchPagePath(-1,
                                                                              Guid.Empty,
                                                                              r.Id,
                                                                              null,
                                                                              null,
                                                                              true);
            }
            else if (o is ArticlesDataSourceResult)
            {
                ArticlesDataSourceResult res = o as ArticlesDataSourceResult;
                if (res.Marque != null && res.Marque.catalog_marques.Count == 1)
                {
                    MarquesDS.catalog_marquesRow r = res.Marque.catalog_marques[0];
                    if (!string.IsNullOrEmpty(TextFormat))
                    {
                        this.Text = string.Format(TextFormat, r.mar_libelle);
                    }
                    else
                    {
                        this.Text = r.mar_libelle;
                    }
                    this.NavigateUrl = ECommerceServer.Contexte.GetSearchPagePath(-1,
                                                                                  Guid.Empty,
                                                                                  r.mar_pk,
                                                                                  null, null, true);
                }
                else
                {
                    this.Visible = false;
                }
            }
            if (o is VueArticlesWebDS.ecommerce_articles_webRow)
            {
                ContexteProvider prv = ECommerceServer.Contexte;
            }
        }