重新部署后,Sharepoint WebPart属性丢失

时间:2013-02-25 14:47:50

标签: c# sharepoint sharepoint-2010 web-parts

我有一个使用一些webpart属性的sharepoint webpart(在本例中为字符串)。这些属性都可以正常工作,但是我说我会对我们的webpart进行更改并部署到服务器,现有的属性会丢失。

阅读完阅读之后我相信它可能与我的属性定义有关:

    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;

        }

有关该怎么做的任何建议?

1 个答案:

答案 0 :(得分:3)

事实证明,丢失的设置/属性与字符串是静态的有关。

我将我的财产改为:

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);
        }

另外,在webpart的ascx.cs文件中,我必须在类定义下面添加它:

public MyWebPart WebPart { get; set; }

最后,我可以使用以下方法访问OnPreRender事件的值:

this.WebPart.Exclusions

有关详细信息,请参阅此网站:NothingButSharepoint.com