Sto cercando di ottenere un ListBox per visualizzare una concatenazione di più righe della tabella Accommodation
.Multiple DisplayMember utilizzando la classe speciale
Poiché non riesco a modificare l'origine dati, ho preparato una classe, AccommodationEntity
, che contiene sia l'oggetto originale Accommodation
sia la stringa che desidero visualizzare.
Tuttavia, per qualche motivo, non riesco a impostare la proprietà DisplayMember del ListBox, che visualizza quindi il jibber-jabber predefinito.
Ho creato la casella di riepilogo come segue:
accommodationList.DisplayMember = "textToShow";
// load and set up accommodation
List<AccommodationEntity> relatedAccommodations =
dt.listHolidayAccommodation(relatedHoliday);
accommodationList.DataSource = relatedAccommodations;
accommodationList.Refresh();
La classe per gli oggetti memorizzati nell'origine dati è simile al seguente:
class AccommodationEntity
{
public accommodation classicAccommodation;
public string textToShow;
public AccommodationEntity(stay relatedStay)
{
this.classicAccommodation = relatedStay.accommodation;
string from = relatedStay.dateFrom.ToString();
string to = relatedStay.dateTo.ToString();
string city = relatedStay.accommodation.location.ToString();
string hotelName = relatedStay.accommodation.name.ToString();
this.textToShow = hotelName + ", " + city + " (" + from + " - " + to + ")";
}
}
} `
E infine, c'è è un metodo che esegue una ricerca (restituendo oggetti corretti):
public List<AccommodationEntity> listHolidayAccommodation(holiday selectedHoliday)
{
List<AccommodationEntity> ubytovani = new List<AccommodationEntity>();
var stays = from singleStay in selectedHoliday.stays
select singleStay;
foreach (stay singleStay in stays)
{
AccommodationEntity newStay = new AccommodationEntity(singleStay);
ubytovani.Add(newStay);
}
return ubytovani;
}
So che dataSource contiene i dati corretti, ma per qualche motivo, sembra che la proprietà DisplayMember sia impostata su ""
.
Qualsiasi aiuto sarebbe apprezzato.
Grazie.
dispiace ho dimenticato di dire, lo faccio quando il modulo inizializza utilizzando alloggioLista .DisplayMember = "textToShow"; dove textToShow è il nome della proprietà contenente la stringa che desidero visualizzare – Ondrej
@Ondrej: Se si impostano le proprietà come si suppone, è possibile inserire parte del codice per le altre classi pertinenti. Forse qualcosa non viene impostato correttamente per loro. –
aggiornato il post di introduzione – Ondrej