L'arte di lavorare con le WebPart - #4

Scenario:

avete sviluppato un portale web utilizzando il WebPart Framework, avete eseguito la fase di test e avete rilasciato il sistema al cliente, che lo sta collaudando inserendo dati a iosa nel db mediante le vostre webpart. Il cliente vi chiede delle modifiche e siete costretti a sostituire alcune properties dichiarate [Personalizable] con delle altre che gestiscono dati in maniera differente.

...e i dati già inseriti dal cliente e da noi persistiti nelle tabelle di ASP.NET ??!?? Sappiamo benissimo che sostituendo proprietà di personalizzazione rendiamo "orfani" i dati scritti nelle tabelle di personalizzazione. Come fare per agganciarli nuovamente e "travasarli" nelle nuove properties?

 

Soluzione:

Lavoriamo con l'interfaccia IVersioningPersonalizable. Espone un unico metodo:

implementando questa interfaccia avete la possibilità di mappare i dati di una proprietà e, se questa viene rimossa, "spostarli" in un'altra. Il metodo Load riceve un dizionario contenente tutti i dati orfani inseriti in tabella dalla proprietà non più esistente.

public new void Load(IDictionary datiOrfani)
{
    
foreach (DictionaryEntry de in datiOrfani)
    {
        
if (de.Key.ToString() == "Prop1")
        {
            _prop3 = de.Value.ToString();
        }    
    
}
}

Nel codice di esempio se i dati orfani sono stati in precedenza scritti dalla property Prop1, i suoi dati sono ora mappati nella property Prop3.

 

powered by IMHO 1.3

«novembre»
domlunmarmergiovensab
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789