【问题标题】:UserControl inherit from another class to extend itUserControl 从另一个类继承来扩展它
【发布时间】:2014-11-06 11:48:08
【问题描述】:
我有一个第三方控件ClientPeoplePicker。问题是无法禁用此控件。为了禁用它,我将控件放在一个带有 position:relative ("1") 的 div 中,并添加另一个带有 position:absolute 和高 z-index ("2") 的控件。所以aspx结构是:
<div id="1">
<div id=2/>
<clientpeoplepicker/>
</div>
现在,我想创建一个用户控件,它将呈现上述所有内容并从 ClientPeoplePicker 继承,因此我可以使用继承,而不必将在内部创建的 ClientPeoplePicker 的属性映射到控件包装器上。我怎样才能实现这个(最好的方法)?如果我只是在用户控件中创建一个实例,在 CreateChildControls 中创建它,我将失去继承。还是应该覆盖渲染?
【问题讨论】:
标签:
asp.net
inheritance
webforms
user-controls
【解决方案1】:
好的,所以我选择了覆盖 RenderControl
编辑:
完整代码:
private bool _enabled = true;
public new bool Enabled
{
get
{
return _enabled;
}
set
{
_enabled = value;
}
}
Panel divWrapper;
Panel divBlocker;
public override void RenderControl(HtmlTextWriter writer)
{
divWrapper = new Panel();
divWrapper.ID = base.ClientID + "_divWrapper";
divWrapper.CssClass = this.CssWraper;
divBlocker = new Panel();
divBlocker.ID = base.ClientID + "_divBlocker";
divBlocker.CssClass = this.CssBlocker;
if(this.Enabled)
{
divBlocker.Style.Add("display", "none");
}
divWrapper.RenderBeginTag(writer);
divBlocker.RenderControl(writer);
base.RenderControl(writer);
divWrapper.RenderEndTag(writer);
}
CSS
.cpp_blockdiv
{
z-index: 1000;
margin: 0px;
width: 100%;
height: 100%;
background-color: #000;
opacity: 0.1;
position: absolute;
}
.cpp_container
{
position:relative;
}