3

いくつかのWebパーツプロパティ(この場合は文字列)を使用するSharePointWebパーツがあります。プロパティはすべて正常に機能しますが、Webパーツに変更を加えてサーバーにデプロイすると、既存のプロパティは失われます。

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;

        }

ここで何をすべきかについての提案はありますか?

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

また、Web パーツの ascx.cs ファイルでは、これをクラス定義のすぐ下に追加する必要がありました。

public MyWebPart WebPart { get; set; }

最後に、次を使用して OnPreRender イベントの値にアクセスできました。

this.WebPart.Exclusions

詳細については、次のサイトを参照してください: NothingButSharepoint.com

于 2013-02-26T15:33:08.273 に答える