¿Cómo manejo la actualización de tipo de propiedad WebPart personalizada durante el redeployment?

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

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!

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
scroll top