Alex Rivera | Logout

Access a control inside a the LayoutTemplate of a ListView

Asked 2009-01-11T22:20:01.770
23

How do I access a Control in the LayoutTemplate of a ListView control?

I need to get to litControlTitle and set its Text attribute.

<asp:ListView ID="lv" runat="server">
  <LayoutTemplate>
    <asp:Literal ID="litControlTitle" runat="server" />
    <asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
  </LayoutTemplate>
  <ItemTemplate>
  </ItemTemplate>
</asp:ListView>

Any thoughts? Perhaps via the OnLayoutCreated event?

Edit
Report

2 Answers

35

Try this:

((Literal)lv.FindControl("litControlTitle")).Text = "Your text";
answered 2009-01-11T22:37:27.820
4

This technique works for template layout; use the init event of the control:

<asp:ListView ID="lv" runat="server" OnDataBound="lv_DataBound">
  <LayoutTemplate>
    <asp:Literal ID="litControlTitle" runat="server" OnInit="litControlTitle_Init" />
    <asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
  </LayoutTemplate>
  <ItemTemplate>
  </ItemTemplate>
</asp:ListView>

And capture a reference to the control for use in the code-behind (e.g) in the ListView's DataBound event:

private Literal litControlTitle;

protected void litControlTitle_Init(object sender, EventArgs e)
{
    litControlTitle = (Literal) sender;
}

protected void lv_DataBound(object sender, EventArgs e)
{
    litControlTitle.Text = "Title...";
}
answered 2012-02-20T22:53:34.303

Your Answer