19 messaggi dal 17 gennaio 2011
Buongiorno, mi scuso in anticipo per la mia "ignoranza", sto creando un web service:

[WebMethod]
public List<DettaglioCommessa> GetWorkItemsByDossierId(int IdCommessa)
{

MyQuery = MySelect + MyFrom + MyWhere;

List<DettaglioCommessa> detailscommessa = new List<DettaglioCommessa>();


DataSet dataSet = new DataSet();
OleDbDataAdapter adapeter = new OleDbDataAdapter(MyQuery, new OleDbConnection(connectionString));

adapeter.Fill(dataSet);

foreach (DataRow item in dataSet.Tables[0].Rows)
{
DettaglioCommessa detailsPratica = new DettaglioCommessa();

detailsPratica.IdCommessa = Convert.ToInt32(item[0]);
detailsPratica.IdStato = Convert.ToInt32(item[1]);
detailsPratica.NumCommessa = Convert.ToInt32(item[2]);
detailsPratica.IdOfficina = Convert.ToInt32(item[3]);
detailsPratica.IdVeicolo = Convert.ToInt32(item[4]);
detailsPratica.IdCliente = Convert.ToInt32(item[5]);
detailsPratica.TypeId = Convert.ToInt32(item[6]);
detailsPratica.BodyId = Convert.ToInt32(item[7]);
detailsPratica.Targa = item .ToString();
detailsPratica.Km = Convert.ToInt32(item[9]);
detailsPratica.Telaio = item[10].ToString();

if (item[11] == null)
{ detailsPratica.DataImmatricolazione = null; }
else
{ detailsPratica.DataImmatricolazione = Convert.ToDateTime(item[11]); }



detailsPratica.NomeDrive = item[12].ToString();
detailsPratica.NomeCliente = item[13].ToString();
detailsPratica.CognomeCliente = item[14].ToString();
detailsPratica.TelCliente = item[15].ToString();
detailsPratica.PartIvaCliente = item[16].ToString();
detailsPratica.CodFiscaleCliente = item[17].ToString();
detailsPratica.CellCliente = item[18].ToString();

if (item[19] == null)
{ detailsPratica.DataApertCommessa = null; }
else
{ detailsPratica.DataApertCommessa = Convert.ToDateTime(item[19]); }


if (item[20]==null)
{detailsPratica.DataRiconsVeicolo =null;}
else
{ detailsPratica.DataRiconsVeicolo = Convert.ToDateTime(item[20]); }


if (item[21] == null)
{ detailsPratica.DataAccetVeicolo = null; }
else
{ detailsPratica.DataAccetVeicolo = Convert.ToDateTime(item[21]); }

if (item[22] == null)
{ detailsPratica.DataAccetVeicoloReale = null; }
else
{ detailsPratica.DataAccetVeicoloReale = Convert.ToDateTime(item[22]); }

if (item[23] == null)
{ detailsPratica.DataInizioLavori = null; }
else
{ detailsPratica.DataInizioLavori = Convert.ToDateTime(item[23]); }

if (item[24] == null)
{ detailsPratica.DataFineLavori = null; }
else
{ detailsPratica.DataFineLavori = Convert.ToDateTime(item[24]); }


detailsPratica.CodAutoriz = item[25].ToString();

if (item[26] == null)
{ detailsPratica.DataAutoriz = null; }
else
{ detailsPratica.DataAutoriz = Convert.ToDateTime(item[26]); }

detailsPratica.OperatoreAut = item[27].ToString();
detailsPratica.NoteAut = item[28].ToString();

detailscommessa.Add(detailsPratica);
}

return detailscommessa;
}
in questo caso il servizio restituisce una List.

public class DettaglioCommessa
{
public int IdCommessa;
public int IdStato;
public int NumCommessa;
public int IdOfficina;
public int IdVeicolo;
public int IdCliente;
public int TypeId;
public int BodyId;
public string Targa;
public int Km;
public string Telaio;
public DateTime? DataImmatricolazione;
public string NomeDrive;
public string NomeCliente;
public string CognomeCliente;
public string TelCliente;
public string PartIvaCliente;
public string CodFiscaleCliente;
public string CellCliente;
public DateTime? DataApertCommessa;
public DateTime? DataRiconsVeicolo;
public DateTime? DataAccetVeicolo;
public DateTime? DataAccetVeicoloReale;
public DateTime? DataInizioLavori;
public DateTime? DataFineLavori;
public string CodAutoriz;
public DateTime? DataAutoriz;
public string OperatoreAut;
public string NoteAut;
public List<DettaglioCarelloCommessa> detailsCarelloCommessa = new List<DettaglioCarelloCommessa>();

}
il mio problema è questo servizio a sua volta contiene una List come si vede nell'ultima riga, come faccio a popolare la list contenente nel metodo?Spero di esser stato chiaro Grazie
Innanzitutto ti invito ad utilizzare la funzionalità "
" dell'editor nel forum, in modo che il codice sia un po' più leggibile :-)

Detto questo, la cosa è abbastanza semplice. Ti faccio un esempio con due classi molto semplici, una "Prodotto" ed una "Dettagli":

public class Prodotto {

        public Prodotto() {
            lstDettagli = new List<Dettagli>();
        }

        public string Nome { get; set; }
        public string Categoria { get; set; }
        public List<Dettagli> lstDettagli { get; set; }   
    }


Nel costruttore della classe nota che inizializzo la lista di Dettagli che trovi qui di seguito:

public class Dettagli {
        public string Isbn { get; set; }
        public string Copertina { get; set; }
    }


Un esempio pratico di come si può aggiungere più dettagli ad una Persona potrebbe essere questo:

List<Prodotto> lstProdotto = new List<Prodotto>();
            Prodotto p = new Prodotto();
            p.Categoria = "Libri";
            p.Nome = "Manuale di informatica";
            p.lstDettagli.Add(new Dettagli { Isbn = "1111", Copertina = "Rigida" });
            p.lstDettagli.Add(new Dettagli { Isbn = "2222", Copertina = "Morbida" });

            lstProdotto.Add(p);


Nel momento che crei una classe Prodotto (nel tuo caso "DettaglioCommessa") farai in modo di inizializzare una nuova lista di "DettaglioCarelloCommessa".

Poi, prima di aggiungere un oggetto DettaglioCommessa alla lista, allo stesso oggetto dovrai aggiungere uno o più elementi DettaglioCarelloCommessa all'oggetto DettaglioCommessa.

E' un giro di parole, ma l'esempio che ti ho fatto dovrebbe grosso modo darti un'idea.

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.