2014-09-12 62 views
0

我有第三方控件ClientPeoplePicker。問題是這個控件不能被禁用。要禁用它,我把控件放在一個div的位置:relative(「1」),並添加另一個位置:absolute和high z-index(「2」)。所以ASPX結構爲:UserControl繼承另一個類來擴展它

<div id="1"> 
<div id=2/> 
<clientpeoplepicker/> 
</div> 

現在,我想創建一個用戶控件,這將使得所有上述的,也從ClientPeoplePicker繼承,這樣我就可以使用繼承,而不是有ClientPeoplePicker內部創建映射特性到控制包裝上。我怎樣才能實現這個(最好的方式)?如果我只是在用戶控件內創建一個實例,要在CreateChildControls中創建它,我將失去繼承。或者我應該重寫渲染?

回答

0

OK,所以我去重寫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; 
}