Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разработка шаблонного элемента управления, Помогите разобраться с примером из MSDN 
:(
    Опции темы
Naum
Дата 28.12.2006, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 2
Всего: 15



Помогите, пожалуйста, разобраться с примером из 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.



--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0781 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.