| Enrico Zerilli |
Table.Rowi[i].ItemArray[j]
Ciao a tutti,
ho un comportamento un pò strano con l'array che contiene tutti gli elemnti di una riga di una tabella. La tabella in esame viene letta da un file XML. Ciclando su tutte le righe della tabella posso catturare gli elemnti della tabella quindi del file XML. Il problema è che i=0 ho la posizione prezzo al j=5 per i=1 ho la posizione prezzo per j=9. Come è possibile tutto ciò? Dove stà l'errore? Grazie ina anticipo Enrico |
| Enrico Zerilli |
Re: Table.Rowi[i].ItemArray[j]
Provo a spiegarmi meglio. Utilizzando un ciclo for tarmite l'istruzione seguente:
PREZZO = myDDTLine.Rows[i].ItemArray[5].ToString() ; ottengo tutte le informzioni inerenti ad una tabella di prezzi. Per i=0 ottengo un prezzo, viceversa per i=2 ottengo un valore null anche quando il dato è presente nel file XML d'ingresso. Ispezionando la tabella con il quick watch ho notato che il valore che cerco è nella posizione 9, cioè per: PREZZO = myDDTLine.Rows[i].ItemArray[9].ToString() ; Come mai? Come posso risolvere questa situazione? |
| Michele Betelli |
Re: Table.Rowi[i].ItemArray[j]
on 6. Sep 2004 17:28 Enrico Zerilli wrote:
> Provo a spiegarmi meglio. Utilizzando un ciclo for tarmite l'istruzione seguente: > > PREZZO = myDDTLine.Rows[i].ItemArray[5].ToString() ; > > ottengo tutte le informzioni inerenti ad una tabella di prezzi. > > Per i=0 ottengo un prezzo, viceversa per i=2 ottengo un valore null anche quando il > dato è presente nel file XML d'ingresso. Ispezionando la tabella con il quick watch > ho notato che il valore che cerco è nella posizione 9, cioè per: > > PREZZO = myDDTLine.Rows[i].ItemArray[9].ToString() ; > > Come mai? > Come posso risolvere questa situazione? > ciao, a te serve solo recuperare il valore o sbaglio? cosi non funziona? PREZZO = myDDTLine.Rows[i]["nome o indice colonna"] ; |
| Raffaele Rialdi |
Re: Table.Rowi[i].ItemArray[j]
on 6. Sep 2004 17:28 Enrico Zerilli wrote:
> Provo a spiegarmi meglio. Utilizzando un ciclo for tarmite l'istruzione seguente: > > PREZZO = myDDTLine.Rows[i].ItemArray[5].ToString() ; > > ottengo tutte le informzioni inerenti ad una tabella di prezzi. > > Per i=0 ottengo un prezzo, viceversa per i=2 ottengo un valore null anche quando il > dato è presente nel file XML d'ingresso. Ispezionando la tabella con il quick watch > ho notato che il valore che cerco è nella posizione 9, cioè per: > > PREZZO = myDDTLine.Rows[i].ItemArray[9].ToString() ; > > Come mai? Veramente non ho ancora capito. Comunque ItemArray non dovrebbe servirti. myDDTLine.Rows[i][j] è l'espressione sufficiente. Stampati tutta la riga (iterando j) e guardati i valori... Raffaele |
| Enrico Zerilli |
Re: Table.Rowi[i].ItemArray[j]
on 6. Sep 2004 17:41 Michele Betelli wrote:
> on 6. Sep 2004 17:28 Enrico Zerilli wrote: > > Provo a spiegarmi meglio. Utilizzando un ciclo for tarmite l'istruzione seguente: > > > > PREZZO = myDDTLine.Rows[i].ItemArray[5].ToString() ; > > > > ottengo tutte le informzioni inerenti ad una tabella di prezzi. > > > > Per i=0 ottengo un prezzo, viceversa per i=2 ottengo un valore null anche quando il > > dato è presente nel file XML d'ingresso. Ispezionando la tabella con il quick watch > > ho notato che il valore che cerco è nella posizione 9, cioè per: > > > > PREZZO = myDDTLine.Rows[i].ItemArray[9].ToString() ; > > > > Come mai? > > Come posso risolvere questa situazione? > > > ciao, > a te serve solo recuperare il valore o sbaglio? > > cosi non funziona? > PREZZO = myDDTLine.Rows[i]["nome o indice colonna"] ; anche con questa espressione ha lo stesso comportamento: per i=0 mi dà il dato, per i=1,2,3 non mi legge alcun valore, anche se nel file XML è presente, per i=4 mi dà il dato corretto e infine per i=5 non mi legge alcun valore. Mi puoi dare qualche altra idea? |
| Enrico Zerilli |
Re: Table.Rowi[i].ItemArray[j]
on 7. Sep 2004 21:20 Raffaele Rialdi wrote:
> on 6. Sep 2004 17:28 Enrico Zerilli wrote: > > Provo a spiegarmi meglio. Utilizzando un ciclo for tarmite l'istruzione seguente: > > > > PREZZO = myDDTLine.Rows[i].ItemArray[5].ToString() ; > > > > ottengo tutte le informzioni inerenti ad una tabella di prezzi. > > > > Per i=0 ottengo un prezzo, viceversa per i=2 ottengo un valore null anche quando il > > dato è presente nel file XML d'ingresso. Ispezionando la tabella con il quick watch > > ho notato che il valore che cerco è nella posizione 9, cioè per: > > > > PREZZO = myDDTLine.Rows[i].ItemArray[9].ToString() ; > > > > Come mai? > > Veramente non ho ancora capito. > Comunque ItemArray non dovrebbe servirti. myDDTLine.Rows[i][j] è l'espressione > sufficiente. > Stampati tutta la riga (iterando j) e guardati i valori... > > Raffaele il problema è che per i=0 riesco a trovare il valore di cui ho bisogno per j=5. Questa è la condizione corretta. Per i=1,2 e 3 ottengo il valore di cui ho bisogno per j=9, andando contro la sua posizione reale nel file xml di partenza in cui è nella posizione 5. Per i=4 trovo il valore nella posizione corretta. Sono stato più chiaro? |
| Raffaele Rialdi |
Re: Table.Rowi[i].ItemArray[j]
> il problema è che per i=0 riesco a trovare il valore di cui ho bisogno per j=5. Questa è la
> condizione corretta. Per i=1,2 e 3 ottengo il valore di cui ho bisogno per j=9, andando contro > la sua posizione reale nel file xml di partenza in cui è nella posizione 5. Per i=4 trovo il > valore nella posizione corretta. > > Sono stato più chiaro? Mi spiace ma sinceramente non ho proprio capito. Ma non puoi stamapre tutti i valori e vedere se sono stati caricati giusti? Tieni conto che ItemArray non ti serve a nulla (serve solo ad averli sotto forma di array, e quindi una copia dei dati). Raffaele |
| Enrico Zerilli |
Re: Table.Rowi[i].ItemArray[j]
on 8. Sep 2004 23:33 Raffaele Rialdi wrote:
> > il problema è che per i=0 riesco a trovare il valore di cui ho bisogno per j=5. Questa è la > > condizione corretta. Per i=1,2 e 3 ottengo il valore di cui ho bisogno per j=9, andando contro > > la sua posizione reale nel file xml di partenza in cui è nella posizione 5. Per i=4 trovo il > > valore nella posizione corretta. > > > > Sono stato più chiaro? > > Mi spiace ma sinceramente non ho proprio capito. Ma non puoi stamapre tutti i valori e vedere se > sono stati caricati giusti? Tieni conto che ItemArray non ti serve a nulla (serve solo ad averli > sotto forma di array, e quindi una copia dei dati). > > Raffaele il problema è appunto questo ... che i dati corretti non sono sempre nella stessa posizione. In un riga sono nella posizione 5 in altre nella posizione 9 ... Enrico |
| Raffaele Rialdi |
Re: Table.Rowi[i].ItemArray[j]
> il problema è appunto questo ... che i dati corretti non sono sempre nella stessa posizione. In un riga
> sono nella posizione 5 in altre nella posizione 9 ... Adesso ho capito ... finalmente :-) Se i dati vengono caricati nella datatable nel modo sbagliato il problema è del file xml di partenza. Ti consiglio di creare una datatable vuota, aggiungere le colonne a mano con Columns.Add, poi aggiungere qualche riga e infine salvare l'intero dataset su disco. A questo punto compari questo file con l'altro e vedi dov'è l'errore. Raffaele |