Помогите, пожалуйста, разобраться с примером из MSDN по разработке шаблонных элемнтов управления. Файл TemplatedFirstControl.cs Код | using System; using System.Web; using System.Web.UI;
namespace CustomControls { [ParseChildren(true)] public class TemplatedFirstControl:Control,INamingContainer { private ITemplate firstTemplate; private String text=null; private Control myTemplateContainer; protected override void OnDataBinding(EventArgs e) { EnsureChildControls(); base.OnDataBinding (e); } [TemplateContainer(typeof(TemplatedFirstControl))] public ITemplate FirstTemplate { get { return firstTemplate; } set { firstTemplate=value; } } public String Text { get { return text; } set { text=value; } } public String DateTime { get { return System.DateTime.Now.ToLongTimeString(); } } public Control MyTemplateContainer { get { return myTemplateContainer; } } protected override void CreateChildControls() { if (FirstTemplate!=null) { myTemplateContainer=new FirstTemplateContainer(this); FirstTemplate.InstantiateIn(myTemplateContainer); Controls.Add(myTemplateContainer); } else { Controls.Add(new LiteralControl(Text+" "+DateTime)); } }
} public class FirstTemplateContainer:Control, INamingContainer { private TemplatedFirstControl parent; public FirstTemplateContainer(TemplatedFirstControl parent) { this.parent=parent; } public String Text { get { return parent.Text; } } public String DateTime { get { return parent.DateTime; } } } }
|
Страница WebForm1.aspx Код | <%@ Register TagPrefix="Custom" NameSpace="CustomControls" Assembly="Sample" %> <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="Sample.WebForm1" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML> <HEAD> <title>WebForm1</title> <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR"> <meta content="C#" name="CODE_LANGUAGE"> <meta content="JavaScript" name="vs_defaultClientScript"> <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema"> <script language="C#" runat="server"> void Page_Load() { First.DataBind(); Second.DataBind(); } </script> </HEAD> <body MS_POSITIONING="GridLayout"> <form runat="server"> Here is a custom templated server control:<br> <br> <CUSTOM:TEMPLATEDFIRSTCONTROL id="First" runat="server" Text="The time on the server is "> <FIRSTTEMPLATE> <H3><FONT face="Verdana" color="red"><%# Container.Text %><%# Container.DateTime %></FONT></H3> </FIRSTTEMPLATE> </CUSTOM:TEMPLATEDFIRSTCONTROL>Here is the templated server control with a different template:<br> <br> <CUSTOM:TEMPLATEDFIRSTCONTROL id="Second" runat="server" Text="The time on the server is "> <FIRSTTEMPLATE> <H1><FONT face="Arial" color="purple"><%# Container.Text %><%# Container.DateTime %></FONT></H1> </FIRSTTEMPLATE> </CUSTOM:TEMPLATEDFIRSTCONTROL>Here is the templated server control without a template:<br> <br> <CUSTOM:TEMPLATEDFIRSTCONTROL id="Third" runat="server" Text="The time on the server is "></CUSTOM:TEMPLATEDFIRSTCONTROL> <br> <br> </form> </body> </HTML>
|
Оба файла в одном проекте. При запуске только третий контрол, который без шаблона отображает Text и DateTime.
--------------------
У нас всего два праздника Новый год и ТЯПница.
|