2013-02-25 71 views
2

我有一個使用某些webpart屬性(本例中爲字符串)的sharepoint webpart。這些屬性都可以正常工作,但我想說,我對web部件進行了更改並將其部署到服務器,但現有屬性會丟失。重新部署後Sharepoint WebPart屬性丟失

breif看完後我相信這可能與我的屬性定義:

public static string Exclusions; 
    [Category("Extended Settings"), 
    Personalizable(PersonalizationScope.Shared), 
    WebBrowsable(true), 
    WebDisplayName("Library Exclusions"), 
    WebDescription("Enter any Libraries to exclude. Use '|' to separate.")] 
    public string _Exclusions 
    { 
     get { return Exclusions; } 
     set 
     { Exclusions = value;} 
    } 

我想知道我是否應該從這裏刪除「靜態」。然而,當我去這樣做,我可以不再使用這個屬性,因爲我一直:

protected override void OnPreRender(EventArgs e) 
     { 

      ((HiddenField)this.FindControl("DocumentLibraryListingHiddenWebPartProperties")).Value = DocumentLibraryListing.DocumentLibraryListing.Exclusions; 

     } 

任何建議在這裏做什麼?

回答

2

事實證明,丟失的設置/屬性與靜態字符串有關。

我改變了我的屬性:

public string Exclusions; 
[Category("Extended Settings"), 
Personalizable(PersonalizationScope.Shared), 
WebBrowsable(true), 
WebDisplayName("Library Exclusions"), 
WebDescription("Enter any Libraries to exclude. Use '|' to separate.")] 
public string _Exclusions 
{ 
    get { return Exclusions; } 
    set 
    { Exclusions = value;} 
} 

此外,我不得不做的CreateChildControls方法如下:

protected override void CreateChildControls() 
     { 
      Control control = Page.LoadControl(_ascxPath); 
      if (control!= null) 
      { 
       ((MyUserControl)control).WebPart = this; 
      } 
      Controls.Add(control); 
     } 

此外,在ascx.cs文件中爲我的WebPart必須在類定義的下方添加此項:

public MyWebPart WebPart { get; set; } 

最後我能夠訪問v使用上OnPreRender事件alues:

this.WebPart.Exclusions 

欲瞭解更多信息,請參閱網站:NothingButSharepoint.com