Hi,

 
>> Ich bin hier grad an nem Usercontrol dran, welches im Wesentlichen aus 
>> einer Outertable besteht und innen dann ein Panel hat. Wie kann ich 
>> denn dem VS begreiflich machen, dass das Panel zu Laufzeit bef�llt 
>> werden darf?
>Wie meinst Du das?
--> wie beim Panel .. Da kannst Du ja auch reinschreiben


>nimm CreateChildControls.
Dann hab ichs aber nicht mehr im Designer :(


>> Und: wenn ich im Designer die gr��e des Controls �ndere, wird's ganz 
>> merkw�rdig: die Tabel wird wiederholt...

>Br�uchte man mal den Code. Und: der VS-Designer ist eine Krankheit ab einem 
>gewissen Punkt. Geh in den HTML Code und arbeite dort.
Das Control bau ich ja f�r interne Nutzer hier. Ich br�uchte es gar nicht ;)

Der Code (Achtung ... Lang :):



using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.ComponentModel;

namespace InfineonWebControls
{
        /// <summary>
        /// Summary description for SimpleBaseTable.
        /// </summary>
        [ParseChildren(false)]
        [PersistChildren(true)]
        [Designer("InfineonWebControls.SimpleBaseTableDesigner, 
InfineonWebControls"),
        DefaultProperty("Header"), 
                ToolboxData("<{0}:SimpleBaseTable 
runat=server>Content</{0}:SimpleBaseTable>")]
        public class SimpleBaseTable : System.Web.UI.WebControls.WebControl
        {
                const string CStyleHead         = "tblHead";
                const string CStyleBody         = "tblBody";

                const string CBaseURL           = 
"http://intra.muc.infineon.com/templates/images/";;
                const string CtabHead_left      = "tabHead_left.gif";
                const string CtabHead_mid       = "tabHead_mid.gif";
                const string CtabHead_right = "tabHead_right.gif";
                const string CtabBody_left      = "tabBody_left.gif";
                const string CtabBody_right = "tabBody_right.gif";
                const string CtabFoot_left      = "tabFoot_left.gif";
                const string CtabFoot_mid       = "tabFoot_mid.gif";
                const string CtabFoot_right     = "tabFoot_right.gif";

                const string Cbtn_min           = "btn_min.gif";
                const string Cbtn_mx            = "btn_max.gif";

                #region test
                private string _Header;
                private bool _ShowOpenClose;
                private bool _UsePostBackForOpenClose;
        private bool _IsClosed;

                private Panel _panel = new Panel();

                [Bindable(true), 
                        Category("Appearance"), 
                        DefaultValue("Description")] 
                public string Header 
                {
                        get
                        {
                                return _Header;
                        }

                        set
                        {
                                _Header = value;
                        }
                }

                [PersistenceMode(PersistenceMode.InnerProperty),
                TemplateContainer(typeof(Panel))]
                
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
                public Panel Content
                {
                        get{return _panel;}
                }

                /// <summary> 
                /// Render this control to the output parameter specified.
                /// </summary>
                /// <param name="output"> The HTML writer to write out to 
</param>
                protected override void Render(HtmlTextWriter output)
                {
                        this.Controls.Add(BuildTable());
                        base.Render(output);
                }
 
                protected override void AddParsedSubObject(object obj)
                {
                        //base.AddParsedSubObject (obj);
                        _panel.Controls.Add(obj as Control);
                }
//              protected override void CreateChildControls()
//              {
//                      this.Controls.Add(BuildTable());
//              }
                

                #endregion

                private HtmlTable BuildTable()
                {
                        HtmlTable tab = new HtmlTable();
                        //Format the Table
                        tab.CellPadding = 0;
                        tab.CellSpacing = 0;
                        tab.Border              = 0;
                        tab.Rows.Add(GetHeader());
                        tab.Rows.Add(GetBody());
                        tab.Rows.Add(GetFooter());
                        return tab;
                }
                private HtmlTableRow GetHeader()
                {
                        HtmlTableRow tr = new HtmlTableRow();
                        tr.Cells.Add(GetHeaderLeft());
                        tr.Cells.Add(GetHeaderMid());
                        tr.Cells.Add(GetHeaderRight());
                        return tr;
                }

                private HtmlTableCell GetHeaderLeft()
                {
                        HtmlTableCell td        = new HtmlTableCell();
                        td.Controls.Add(GetImage(CBaseURL + CtabHead_left));
                        return td;
                }

                private HtmlImage GetImage(string src)
                {
                        HtmlImage img = new HtmlImage();
                        img.Src = src;
                        return img;
                }
                
                private HtmlTableCell GetHeaderMid()
                {
                        HtmlTableCell td = new HtmlTableCell();
                        td.Attributes["background"] = CBaseURL + CtabHead_mid;
                        td.Align = "left";
                        td.Attributes["class"] = CStyleHead;
                        td.Width = "100%";
                        //<td 
background="http://intra.muc.infineon.com/templates/images/tabHead_mid.gif"; 
align="left"
                        //width="100%" class="tblHead">
                        td.InnerHtml ="<table border=\"0\" cellpadding=\"0\" 
cellspacing=\"0\" width=\"100%\">" 
                                                + "<tr><td align=\"left\">" + 
Header + "</td>"
                                                + "<td align=\"right\"><img 
border=\"0\" src=\"" + CBaseURL + Cbtn_min + "\" align=\"right\" height=\"16\""
                                                + "width=\"16\" 
style=\"CURSOR:pointer\" onclick=\"fnShowHidePanel(this);\"></td>"
                                                + "</tr></table></td>";
                        return td;
                }
                private HtmlTableCell GetHeaderRight()
                {
                        HtmlTableCell td = new HtmlTableCell();
                        td.Controls.Add(GetImage(CBaseURL + CtabHead_right));
                        return td;
                }

                private HtmlTableRow GetBody()
                {
                        HtmlTableRow tr = new HtmlTableRow();
                        tr.Cells.Add(GetBodyLeft());
                        tr.Cells.Add(GetBodyMid());
                        tr.Cells.Add(GetBodyRight());
                        return tr;

                }
                private HtmlTableCell GetBodyLeft()
                {
                        HtmlTableCell td = new HtmlTableCell();
                        td.Attributes["background"] = CBaseURL + CtabBody_left;
                        td.Controls.Add(GetImage(CBaseURL + CtabBody_left));
                        return td;
                }
                private HtmlTableCell GetBodyMid()
                {
                        HtmlTableCell td = new HtmlTableCell();
                        td.Align = "left";
                        td.VAlign = "top";
                        td.BgColor = "#ffffff";
                        td.Attributes["class"] = CStyleBody;
                        td.Controls.Add(_panel);

                        return td;
                }
                private HtmlTableCell GetBodyRight()
                {
                        HtmlTableCell td = new HtmlTableCell();
                        td.Attributes["background"] = CBaseURL + CtabBody_right;
                        td.Controls.Add(GetImage(CBaseURL + CtabBody_right));
                        return td;
                }

                private HtmlTableRow GetFooter()
                {
                        HtmlTableRow tr = new HtmlTableRow();
                        tr.Cells.Add(GetFooterLeft());
                        tr.Cells.Add(GetFooterMid());
                        tr.Cells.Add(GetFooterRight());
                        return tr;
                }
                private HtmlTableCell GetFooterLeft()
                {
                        HtmlTableCell td = new HtmlTableCell();
                        td.Controls.Add(GetImage(CBaseURL + CtabFoot_left));
                        return td;
                }

                private HtmlTableCell GetFooterMid()
                {
                        HtmlTableCell td = new HtmlTableCell();
                        td.Attributes["background"] = CBaseURL + CtabFoot_mid;
                        td.Controls.Add(GetImage(CBaseURL + CtabFoot_mid));
                        return td;
                }

                private HtmlTableCell GetFooterRight()
                {
                        HtmlTableCell td = new HtmlTableCell();
                        td.Controls.Add(GetImage(CBaseURL + CtabFoot_right));
                        return td;
                }

        }
}

  




_______________________________________________
Asp.net Mailingliste, Postings senden an:
[EMAIL PROTECTED]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/asp.net

Antwort per Email an