Comment gérer la mise à jour du type de propriété webpart personnalisé lors de redéployer
-
16-10-2019 - |
Question
J'ai un webpart personnalisé qui a été définie par une propriété comme
[Personalizable(PersonalizationScope.Shared), WebBrowsable(true), WebDisplayName("Chart Type"), Category("Chart - Required")]
[InitializationParameterName("ySeriesType")]
public DataSeries1 YSeriesType { get; set; }
qui a été déployée. J'ai ensuite changé à:
[Personalizable(PersonalizationScope.Shared), WebBrowsable(true), WebDisplayName("Chart Type"), Category("Chart - Required")]
[InitializationParameterName("ySeriesType")]
public YSeriesType YSeriesType { get; set; }
Ce changement provoque maintenant une erreur suggérant DataSeries1 n'a pas été trouvé.
Comment puis-je gérer la mise à niveau pour ce scénario?
FWIW, la IVersioningPersonalizable
suivante ne semble pas fonctionner:
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;
}
}
Merci!
La solution
Votre code IVersioningPersonalizable semble bon, mais je pense que SharePoint détermine les propriétés inconnues par leur nom, et si la propriété n'a pas été renommé - il ne sera pas inconnu ...
Alors, pourriez-vous bien renommage de YSeriesType et essayez d'effectuer la mise à niveau?
Autres conseils
Le message d'erreur fait référence à la classe DataSeries1, qui est utilisé par le webpart existant. Donc, je suppose que vous avez supprimé (ou renommé) cette classe.
Après l'exécution du code qui met à jour les valeurs de propriété, vous pouvez supprimer en toute sécurité votre classe DataSeries1.