C# Web控件是否包含另一个Web控件?
我想定制一个网络控制,可以这样使用:C# Web控件是否包含另一个Web控件?,c#,asp.net,C#,Asp.net,我想定制一个网络控制,可以这样使用: <cc1:TitleEx runat="server" Theme="Sky" DemoUrl="what.swf" Left="150" Width="250"> <asp:Literal ID="Literal1" runat="server"></asp:Literal> </cc1:TitleEx> 基类是: [Bindable(true)] [Category("Appearanc
<cc1:TitleEx runat="server" Theme="Sky" DemoUrl="what.swf" Left="150" Width="250">
<asp:Literal ID="Literal1" runat="server"></asp:Literal>
</cc1:TitleEx>
基类是:
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? String.Empty : s);
}
set
{
if (this.HasControls())
{
this.Controls.Clear();
}
ViewState["Text"] = value;
}
}
/// <summary>
/// child control's content
/// </summary>
protected StringBuilder HtmlContent = new StringBuilder();
protected override void AddParsedSubObject(object obj)
{
if (obj is LiteralControl)
{
HtmlContent.Append(((LiteralControl)obj).Text);
this.Text = HtmlContent.ToString();
}
else
{
if (obj != null)
{
HtmlContent.Append(GetControlHtml(obj as Control));
this.Text = HtmlContent.ToString();
}
}
}
/// <summary>
/// get the child controls' html
/// </summary>
protected string GetControlHtml(Control ctl)
{
StringBuilder sb = new StringBuilder();
StringWriter tw = new StringWriter();
HtmlTextWriter writer = new HtmlTextWriter(tw);
ctl.RenderControl(writer);
sb.Append(writer.InnerWriter.ToString());
return sb.ToString();
}
[Bindable(true)]
[类别(“外观”)]
[默认值(“”)
[可本地化(正确)]
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
公共字符串文本
{
得到
{
字符串s=(字符串)视图状态[“文本”];
返回((s==null)?字符串。空:s);
}
设置
{
if(this.HasControls())
{
this.Controls.Clear();
}
ViewState[“文本”]=值;
}
}
///
///子控件的内容
///
受保护的StringBuilder HtmlContent=新StringBuilder();
受保护的覆盖无效AddParsedSubObject(对象obj)
{
if(obj是文字控制)
{
HtmlContent.Append(((LiteralControl)obj.Text);
this.Text=HtmlContent.ToString();
}
其他的
{
如果(obj!=null)
{
Append(GetControlHtml(obj作为控件));
this.Text=HtmlContent.ToString();
}
}
}
///
///获取子控件的html
///
受保护字符串GetControlHtml(控制ctl)
{
StringBuilder sb=新的StringBuilder();
StringWriter tw=新的StringWriter();
HtmlTextWriter writer=新的HtmlTextWriter(tw);
控制渲染控制(编写器);
sb.Append(writer.InnerWriter.ToString());
使某人返回字符串();
}
我的问题是当我在Page\u Load()
中将字符串设置为此文本控件时,该字符串无法显示。我还尝试在OnPreInit()
,OnPreLoad()
中设置值,但仍然没有任何运气
以前有没有人遇到过这个问题
你是如何解决这个问题的?我已经通过面板找到了答案。 这是我的解决办法。http://www.cnblogs.com/coolkiss/archive/2010/12/30/1921494.html