Question

I have a repeater generates LinkButtons

Here is the repeater:

<asp:Repeater runat="server" ID="rptBreadCrumb" >
    <ItemTemplate>
        <div>
            <asp:LinkButton CssClass="process-breadcrumb" ID="lnkBrdCrmb" runat="server" OnCommand="lnkWeb_Click" />
        </div>
    </ItemTemplate>
</asp:Repeater>

and here is the codebehind code:

var items = new List<object> {};
var urlList = weburl.ParseUrl();
foreach (var url in urlList)
{
    using (var site = new SPSite(url))
    {
        using (var selectedWeb = site.OpenWeb())
        {
            items.Add(new { Text = selectedWeb.Title + " > ", Url = url });
        }
    }
}
rptBreadCrumb.DataSource = items;
rptBreadCrumb.DataBind();

Am I missing something? Beacuse its not displaying any text. The linkbuttons gets generated, but there is no text. How can I make sure that the linkbuttons gets it?

Was it helpful?

Solution

You could use the Repeaters ItemDataBound event to set the url and text.

aspx:

<asp:Repeater runat="server" ID="rptBreadCrumb" OnItemDataBound="rptBreadCrumb_DataBound" >
... 

codebehind:

protected void rptBreadCrumb_DataBound(Object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        LinkButton lnkBrdCrmb = (LinkButton)e.Item.FindControl("lnkBrdCrmb");
        // get the anonymous type's properties via DataBinder.Eval
        string text = (string)DataBinder.Eval(e.Item.DataItem, "Text");
        string url = (string)DataBinder.Eval(e.Item.DataItem, "Url");
        lnkBrdCrmb.Text = text;
        lnkBrdCrmb.PostBackUrl = url;
    }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top