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