dies ist ein Beispielcode von meiner benutzerdefinierten Server-Steuerung:Datenbindung auf Custom Control mit ITemplate
[Designer(typeof(ContainerControlDesigner))]
[ToolboxData("<{0}:BlocArrondi runat=server><ContenuPrincipal></ContenuPrincipal></{0}:BlocArrondi>")]
public class BlocArrondi : WebControl
{
private ITemplate _ContenuPrincipal;
protected Panel _PanelContenuPrincipal = new Panel();
public BlocArrondi()
: base(HtmlTextWriterTag.Div)
{
}
[PersistenceMode(PersistenceMode.InnerProperty)]
[TemplateInstance(TemplateInstance.Single)]
public ITemplate ContenuPrincipal
{
get { return _ContenuPrincipal; }
set { _ContenuPrincipal = value; }
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
_PanelContenuPrincipal.ID = "PanelPrincipal";
this.Controls.Add(_PanelContenuPrincipal);
if (_ContenuPrincipal != null)
_ContenuPrincipal.InstantiateIn(_PanelContenuPrincipal);
}
}
und hier ist die Umsetzung:
<controls:BlocArrondi runat="server">
<ContenuPrincipal>
<asp:Label id="LabelInfo" runat="server" />
</ContenuPrincipal>
</controls:BlocArrondi>
My Label Labelinfo ist zugänglich auf der Code-behind, groß !
Aber wenn ich meine individuelle Steuerung in einem Repeater oder einem Listview verwenden, kann ich nicht die Container.DataItem Eigenschaft innerhalb der ContenuPrincipal Vorlage verwenden:
<asp:Repeater id="RepeaterInfos" runat="server">
<ItemTemplate>
<controls:BlocArrondi runat="server">
<ContenuPrincipal>
<asp:Label runat="server" Text="<%# (Container.DataItem as MsgInfo).DisplayMessage() " />
</ContenuPrincipal>
</controls:BlocArrondi>
</ItemTemplate>
</asp:Repeater>
Die Fehlermeldung:
'System.Web.UI.Control' enthält keine Definition für 'DataItem' und es wurde keine Erweiterungsmethode 'DataItem' gefunden, die ein erstes Argument vom Typ 'System.Web.UI.Control' akzeptiert (fehlt eine using-Direktive) oder eine Baugruppenreferenz?)
Wie kann ich die Container.DataItem-Eigenschaft innerhalb der ContenuPrincipal-Vorlage meines Steuerelements verwenden?
Große Lösung für Ihr Problem. Ich kam fast zur selben Zeit. –