Il second example you found funziona quasi, manca solo un po '. Tutto ciò che era necessario era 2 metodi nel controllo principale.
Aggiungere questo codice al file AppointmentControl.cs
e funzionerà.
protected override object SaveViewState()
{
if (appointments != null)
return appointments.SaveViewState();
return null;
}
protected override void LoadViewState(object savedState)
{
appointments = new AppointmentCollection();
appointments.LoadViewState(savedState);
}
Il codice nel sito di esempio era abbastanza decente. Ha implementato tutte le interfacce che dovrebbe avere e ha fatto un buon lavoro. Dove si separava era che, nonostante avesse tutto il codice di cui aveva bisogno nei bit astratti, non importava perché le interfacce non erano referenziate nei posti che dovevano essere.
Le classi di raccolta utilizzate non avevano nulla di "speciale" su di esse, a parte l'implementazione di alcune interfacce. Il framework non chiamerà automaticamente questi metodi. Il framework invierà tuttavia richiamare i metodi sovrascritti che ho scritto sopra, che è necessario implementare affinché il controllo possa salvare gli elementi nella raccolta. Finché li chiami, tutto funzionerà.
fonte
2009-02-01 02:55:35
Ecco un [collegamento aggiornato al 2 ° esempio] (http://blog.spontaneouspublicity.com/child-collections-in-asp-net-custom-controls) –
Grazie per l'aggiornamento. – Larsenal