再展開中にカスタムWebPartプロパティタイプの更新を処理するにはどうすればよいですか

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/12643

質問

のようなプロパティで定義されたカスタムWebパートがあります

[Personalizable(PersonalizationScope.Shared), WebBrowsable(true), WebDisplayName("Chart Type"), Category("Chart - Required")]
[InitializationParameterName("ySeriesType")]
public DataSeries1 YSeriesType { get; set; }

展開されています。それから私はそれを次のように変更しました:

[Personalizable(PersonalizationScope.Shared), WebBrowsable(true), WebDisplayName("Chart Type"), Category("Chart - Required")]
[InitializationParameterName("ySeriesType")]
public YSeriesType YSeriesType { get; set; }

この変更により、DataSeries1が見つからなかったことを示唆するエラーが発生しました。このシナリオのアップグレードをどのように処理できますか? FWIW、次の IVersioningPersonalizable うまくいかなかったようです:

void IVersioningPersonalizable.Load(IDictionary unknownProperties)
{
    if (unknownProperties == null)
        return;

    _dirty = true;

    foreach (DictionaryEntry entry in unknownProperties)
    {
        switch (Convert.ToString(entry.Key))
        {
            case "YSeriesType":
                this.YSeriesType = (YSeriesType)Enum.Parse(typeof(YSeriesType), Convert.ToString(entry.Value));
                break;
        }
    }
}

protected override void OnInit(EventArgs e)
{
    if (_dirty && null != base.WebPartManager)
    {
        SetPersonalizationDirty();
        _dirty = false;
    }
}

ありがとう!

役に立ちましたか?

解決

iversioningingpersonAlizableコードは正しいように見えますが、SharePointはその名前で不明なプロパティを決定すると思います。

それで、yseriestypeプロパティの名前を変更して、アップグレードをもう一度実行してみてください。

他のヒント

エラーメッセージは、既存のWebパートで使用されているクラスDataSeries1を参照しています。だから、私はあなたがこのクラスを削除(または改名)したと推測しています。

プロパティ値を更新するコードを実行した後、DataSeries1クラスを安全に削除できます。

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top