2013-02-25 38 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