35 messaggi dal 26 agosto 2010
Salve a tutti,
ho un mini progetto "di test", questo il codice:

public abstract class PdaItem
{
public PdaItem(string name)
{
Name = name;
}
public PdaItem() { }
public virtual string Name { get; set; }

//metodi astratti
public abstract string GetSummary();
public abstract List<PdaItem> Caricati();
}


//classe Contact deriva da PdaItem
public class Contact : PdaItem
{
//faccio override della proprietà ereditata dalla classe madre
public override string Name
{
get
{
return FirstName + " " + LastName;
}
set
{
string[] names = value.Split(' ');
// Error handling not shown.
FirstName = names[0];
LastName = names[1];
}
}
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }

public Contact(string name)
: base(name)
{
Name = name;
}
public Contact() {}


public override string GetSummary()
{
return string.Format("FirstName: {0}"+ "LastName: {1}"+ "Address: {2}", FirstName,LastName, Address );
}

public override List<PdaItem> Caricati()
{
List<PdaItem> p = new List<PdaItem>();
p.Add(new Contact("CONTATTO X ORD"));
p.Add(new Contact("CONTATTO X URG"));
p.Add(new Contact("CONTATTO X GDP"));

return p;
}
}//fine classe


//classe Appuntamento deriva da PdaItem --Per test
public class Appointment : PdaItem
{
public Appointment() { } //costruttore senza argomenti per //collegarlo alla ODS
public Appointment(string name)
: base(name)
{
Name = name;
}

public Appointment(string name,DateTime inizio, DateTime fine, string luogo )
: base(name)
{
this.StartDateTime = inizio;
this.EndDateTime = fine;
this.Location = luogo;
}
public DateTime StartDateTime { get; set; }
public DateTime EndDateTime { get; set; }
public string Location { get; set; }

public override string GetSummary()
{
return string.Format(
"Subject: {0}" + Environment.NewLine
+ "Start: {1}" + Environment.NewLine
+ "End: {2}" + Environment.NewLine
+ "Location: {3}", Name, StartDateTime, EndDateTime, Location);

}
//METODO DI TEST
public override List<PdaItem> Caricati()
{
List<PdaItem> p = new List<PdaItem>();
p.Add(new Appointment("APPUNTAMENTO X ORD"));
p.Add(new Appointment("APPUNTAMENTO X URG", new DateTime(2008, 7, 18), new DateTime(2008, 7, 19),"Stadio"));
p.Add(new Appointment("APPUNTAMENTO Appuntamento X GDP", new DateTime(2012, 6, 4), new DateTime(2012, 6, 4), "Compleanno"));
p.Add(new Contact("CONTATTO X ORD"));
p.Add(new Contact("CONTATTO X URG"));
p.Add(new Contact("CONTATTO X GDP"));

return p;
}
Nel metodo Caricati, definito ad esempio nella classe Appointment, simulo una connessione al db per recuperare un elenco di contatti e appuntamenti. Come si vede dal codice sopra, entrambe le classi derivano da PdaItem, e contengono proprietà specifiche, ad esempio Appointment ha data inizio ecc.

Ora vorrei in una webform una GridView che mi visualizzi questo elenco:
aggiungo una ODS, e dall'elenco delle classi disponibili al collegamento trovo solo Contact e Appointment.
Scelgo di collegarmi alla Appointment, imposto la proprietà TypeName a bjectModel.Appointment e il metodo Select a Caricati.

Aggiungo una Gridview, la collego all'ODS e noto che il campo che viene visualizzato è l'unico campo Name della classe astratta.
Eseguendo il codice, la pagina viene caricata correttamente ma vedo solo quel campo.
Per controprova, se aggiungo un ulteriore campo alla classe astratta e ricreo la gridview, vedo oltre al campo Name anche quest'ultimo, quindi il controllo ODS è in qualche modo "collegato" alla classe astratta. Ora, d'accordo che il metodo Caricati restituisce una lista di PdaItem, però la TypeName fa riferimento ad Appointment...non dovrebbe essere quest'ultimo a comandare?

L'idea era questa cmq: vorrei che nella griglia comparissero i campi dell'entità Appointment quando viene recuperato dal db un appuntamento e i campi dell'entità Contact quando viene recuperato un contatto...è fattibile?
Grazie!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC