再展開中にカスタムWebPartプロパティタイプの更新を処理するにはどうすればよいですか
-
16-10-2019 - |
質問
のようなプロパティで定義されたカスタム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クラスを安全に削除できます。
所属していません sharepoint.stackexchange