LoadTemplate und DataBinding

Written on January 02, 2007

Will man eine Template via LoadTemplate-Methode inkl. DataBinding z.B. in einen Repeater definieren, löst man das wie folgt:

  1. Template in einem .ascx-File definieren, z.B.:

    <%@ Control Language="C#" ClassName="AdminMenuTemplate" %> <asp:HyperLink ID="EditHyperLink" runat="Server" NavigateUrl='

Wichtig ist hierbei, dass man nicht, wie im Repeater direkt oder anderen DataBoundControls einfach Eval("Key") verwenden kann, sondern den entsprechenden Container referenziert.
Die Syntax unter ASP.NET 1.1 ist übrigens

(Databinder.Eval(Container.DataItem, "Key"))
  1. Definieren und Laden der ItemTemplate (z.B.):

    repeater.ItemTemplate = this.LoadTemplate("~/admin/UI/Controls/AdminMenuTemplate.ascx");

  1. Definierte ITemplate instanziieren:

    repeater.ItemTemplate.InstantiateIn(repeater);

  1. DataBinding ausführen:

    repeater.DataBind();