Ho creato una coppia di classi personalizzate (NTDropDown
e NTBaseFreight
) che uso per memorizzare i dati che richiamo da un DB. Inizializzo un elenco di NTBaseFreight
e 2 elenchi per NTDropDown
.list.add sembra aggiungere un riferimento all'oggetto originale?
posso utilizzare con successo List.Add
per aggiungere carichi alla lista noli, ma come il debug del codice, i miei 2 elenchi a discesa contenere solo 1 NTDropDown
, che ha sempre gli stessi valori NTDropDown
(Sto assumendo questo è un riferimento problema, ma cosa sto sbagliando?
per fare un esempio, in seconda fila, se il vettore e carrier_label
erano "001", "MyTruckingCompany"
e ho messo una pausa sulla if per frt_carriers
, sia frt_carriers e frt_modes avrebbero contenere soltanto 1 articolo nella loro lista, con i valori "001", "MyTruckingCompany"
... gli stessi valori in NTDropDown
.
Codice:
List<NTDropDown> frt_carriers = new List<NTDropDown>();
List<NTDropDown> frt_modes = new List<NTDropDown>();
List<NTBaseFreight> freights = new List<NTBaseFreight>();
NTDropDown tempDropDown = new NTDropDown();
NTBaseFreight tempFreight = new NTBaseFreight();
//....Code to grab data from the DB...removed
while (myReader.Read())
{
tempFreight = readBaseFreight((IDataRecord)myReader);
//check if the carrier and mode are in the dropdown list (add them if not)
tempDropDown.value = tempFreight.carrier;
tempDropDown.label = tempFreight.carrier_label;
if (!frt_carriers.Contains(tempDropDown)) frt_carriers.Add(tempDropDown);
tempDropDown.value = tempFreight.mode;
tempDropDown.label = tempFreight.mode_label;
if (!frt_modes.Contains(tempDropDown)) frt_modes.Add(tempDropDown);
//Add the freight to the list
freights.Add(tempFreight);
}
ok, ho capito ... Ho bisogno di inizializzare un NUOVO NTDropDown ogni volta (non riutilizzare tempDropDown più e più volte). quindi, aggiungendo 'tempDropDown = new NTDropDrop();' prima di usarlo ogni volta. Dovrei cancellare questa domanda? –
No. Lascia la domanda. Risolvere la tua domanda è ancora utile a tutti. – hometoast