¿Cómo manejo la actualización de tipo de propiedad WebPart personalizada durante el redeployment?
-
16-10-2019 - |
Pregunta
Tengo una parte web personalizada que se definió con una propiedad como
[Personalizable(PersonalizationScope.Shared), WebBrowsable(true), WebDisplayName("Chart Type"), Category("Chart - Required")]
[InitializationParameterName("ySeriesType")]
public DataSeries1 YSeriesType { get; set; }
que ha sido implementado. Luego lo cambié a:
[Personalizable(PersonalizationScope.Shared), WebBrowsable(true), WebDisplayName("Chart Type"), Category("Chart - Required")]
[InitializationParameterName("ySeriesType")]
public YSeriesType YSeriesType { get; set; }
Este cambio ahora causa un error que sugiere que no se encontró datos1. ¿Cómo puedo manejar la actualización para este escenario? Fwiw, lo siguiente IVersioningPersonalizable
no parecía funcionar:
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;
}
}
¡Gracias!
Solución
Su código de personalización de variedades se ve bien, pero creo que SharePoint determina las propiedades desconocidas por su nombre, y si la propiedad no se renombró, no será desconocido ...
Entonces, ¿podría cambiar el nombre de la propiedad Yseriestype e intentar realizar la actualización nuevamente?
Otros consejos
El mensaje de error se refiere a la clase DataSeries1, que está utilizando el WebPart existente. Entonces, supongo que eliminaste (o renombró) esta clase.
Después de ejecutar el código que actualiza los valores de la propiedad, puede eliminar de manera segura su clase DataSeries1.