3

我有一个使用一些 webpart 属性(在本例中为字符串)的 sharepoint webpart。这些属性都可以按照我的意愿工作,但是如果我对我们的 web 部件进行了更改并部署到服务器,现有的属性就会丢失。

简要阅读后,我相信这可能与我的属性定义有关:

    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;

        }

关于在这里做什么的任何建议?

4

1 回答 1

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

于 2013-02-26T15:33:08.273 回答