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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Render контрола 
:(
    Опции темы
fessko
Дата 20.7.2006, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 25.6.2006
Где: Минск, Беларусь

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



Есть WebControl который можно использовать так
Код

<A:MyControl ID="zzz" runat="server">
        <LeftPanel>
            <asp:Button ID = "BT1" runat="server" />
            <asp:Button ID = "Button1" runat="server" />
            <asp:Button ID = "Button2" runat="server" />
        </LeftPanel>
        <RigthPanel>
            <asp:Label ID="Label1" runat="server" />
            <asp:Label ID="Label2" runat="server" />
            <asp:Label ID="Label3" runat="server" />
        </RigthPanel>
    </A:MyControl >

необходимо выделить контролы из тегов <LerfPanel> и <RightPanel> и отрендерить их. Как это сделать, народ подскажите 
PM MAIL   Вверх
Red Wind
Дата 26.7.2006, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 280
Регистрация: 25.6.2004
Где: Минск

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



У меня есть похожая заготовка. Может поможет. Тут тоже две панели, и в каждой по одному лабелу.
Думаю разберёшься.
Код

using System;
using System.ComponentModel;
using System.Drawing;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace MessagePanelControlLibrary
{
    [
    AspNetHostingPermission(SecurityAction.Demand,
        Level = AspNetHostingPermissionLevel.Minimal)]
    [AspNetHostingPermission(SecurityAction.InheritanceDemand,
        Level = AspNetHostingPermissionLevel.Minimal)]
    [DefaultProperty("MessageLabelText")]
    [ToolboxData("<{0}:MessageComponent runat=server></{0}:MessageComponent>")]
    public class MessageComponent : CompositeControl
    {
        private bool ControlsCreated = false;
        private Panel InfoPanel;
        private Label InfoLabel;
        private Panel MessagePanel;
        private Label MessageLabel;

        #region AppearanceRegion

        [
        Bindable(true),
        Category("Appearance"),
        DefaultValue(""),
        Description("The text to display on the InfoLabel.")
        ]
        public string InfoLabelText
        {
            get
            {
                EnsureChildControls();
                return InfoLabel.Text;
            }
            set
            {
                EnsureChildControls();
                InfoLabel.Text = value.Replace("\n", "<br />");
            }
        }

        [
        Bindable(true),
        Category("Appearance"),
        DefaultValue(""),
        Description("The text to display on the MessageLabel.")
        ]
        public string MessageLabelText
        {
            get
            {
                EnsureChildControls();
                return MessageLabel.Text;
            }
            set
            {
                EnsureChildControls();
                MessageLabel.Text = value.Replace("\n", "<br />");
            }
        }

        [
        Bindable(true),
        Category("Appearance"),
        DefaultValue(""),
        Description("The BackColor property of InfoPanel.")
        ]
        public Color InfoPanelBackColor
        {
            get
            {
                EnsureChildControls();
                return InfoPanel.BackColor;
            }
            set
            {
                EnsureChildControls();
                InfoPanel.BackColor = value;
            }
        }

        [
        Bindable(true),
        Category("Appearance"),
        DefaultValue(""),
        Description("The BackColor property of MessagePanel.")
        ]
        public Color MessagePanelBackColor
        {
            get
            {
                EnsureChildControls();
                return MessagePanel.BackColor;
            }
            set
            {
                EnsureChildControls();
                MessagePanel.BackColor = value;
            }
        }

        [
        Bindable(true),
        Category("Appearance"),
        DefaultValue(""),
        Description("The BorderColor of panels.")
        ]
        public Color PanelsBorderColor
        {
            get
            {
                EnsureChildControls();
                return MessagePanel.BorderColor;
            }
            set
            {
                EnsureChildControls();
                MessagePanel.BorderColor = value;
                InfoPanel.BorderColor = value;
            }
        }

        [
        Bindable(true),
        Category("Appearance"),
        DefaultValue(""),
        Description("The BorderStyle of panels.")
        ]
        public BorderStyle PanelsBorderStyle
        {
            get
            {
                EnsureChildControls();
                return MessagePanel.BorderStyle;
            }
            set
            {
                EnsureChildControls();
                MessagePanel.BorderStyle = value;
                InfoPanel.BorderStyle = value;
            }
        }

        #endregion

        protected override void RecreateChildControls()
        {
            EnsureChildControls();
        }

        protected override void CreateChildControls()
        {
            Controls.Clear();

            InfoLabel = new Label();
            InfoLabel.ID = "InfoLabel";
            InfoLabel.Text = "InfoLabel";

            InfoPanel = new Panel();
            InfoPanel.ID = "InfoPanel";
            InfoPanel.Controls.Add(InfoLabel);
            InfoPanel.BackColor = Color.Aqua;
            InfoPanel.Width = Unit.Pixel(100);

            MessageLabel = new Label();
            MessageLabel.ID = "MessageLabel";
            MessageLabel.Text = "MessageLabel";

            MessagePanel = new Panel();
            MessagePanel.ID = "MessagePanel";
            MessagePanel.Controls.Add(MessageLabel);
            MessagePanel.BackColor = Color.Red;
            MessagePanel.Width = Unit.Pixel(400);

            this.Controls.Add(InfoPanel);
            this.Controls.Add(MessagePanel);
            ControlsCreated = true;

        }

        protected override void Render(HtmlTextWriter writer)
        {
            if (!ControlsCreated)
            CreateChildControls();
            AddAttributesToRender(writer);

            //writer.AddAttribute(HtmlTextWriterAttribute.Bordercolor, "black");
            //writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0");
            //writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");
            //writer.AddAttribute(HtmlTextWriterAttribute.Border, "solid");

            writer.RenderBeginTag(HtmlTextWriterTag.Table);
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);

                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                    InfoPanel.RenderControl(writer);
                writer.RenderEndTag();

                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                    MessagePanel.RenderControl(writer);
                writer.RenderEndTag();

            writer.RenderEndTag();
            writer.RenderEndTag();
        }
    }
}



Как ты видишь, панели рисуються в ячейкаж простой html таблицы. 
writer.RenderBeginTag(HtmlTextWriterTag.Tr) - начинает новую строку
writer.RenderBeginTag(HtmlTextWriterTag.Td) - начинает новый столбец
writer.RenderEndTag() - закрывает открытый тэг 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

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

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

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


 




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


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

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