4 messaggi dal 27 settembre 2006
Salve a tutti! E' il mio primo mess., spero di non fare casino subito.

Sono due giorni che sbatto la testa per capire come fare ad infilare una serie di array multidimensionali dentro ad un arraylist dinamico e poi leggerne i valori in base all'indice dell'array interno multidim.

Mi spiego meglio:

Lenguage: C#

    protected void Page_Load(object sender, EventArgs e)
    {
             // CONNESSIONE A DB
                conn.Open();
             // DATASET
                adapter.Fill(ds, "SQL");
             // DICHIARO ARRAYLIST 'ArFiltri'
                ArrayList ArFiltri = new ArrayList();
             // ENTRO DENTRO AL DS PER PRENDERE 
             // I CAMPI DA INSERIRE NELL' ARRAYLIST/ARRAYm
                foreach (DataRow row in ds.Tables["SQL"].Rows)
                {
                 // METTO I DATI DEL DS IN VARIABILI STRING
                    string a = row["A"].ToString();
                    string b = row["B"].ToString();
                    string c = row["C"].ToString();
                 // A QUESTO PUNTO HO PROVATO DUE STRADE
                 // **1**
                    ArFiltri.Add(new string[,] { { a }, { b }, { c } });
                 // **2**
                    ArFiltri.Add(a);
                    ArFiltri.Add(b);
                    ArFiltri.Add(c);
                 // DI QUESTE DUE STRADE, LA SECONDA OVVIAMENTE FUNZIONA, 
                 // MA NON MI PERMETTE DI AVERE UNA MULTIDIMENSIONE.
                 // LA PRIMA MI RESTITUISCE A VIDEO, QUANDO LA VADO A SCORRERE, System.String[,]
                        
                     // VERIFICO CHE CI SIA QUALCOSA, E C'E'.
                        lblStatus.Visible = true;
                        lblStatus.Text = Convert.ToString(ArFiltri.Count) + "<br />";
                }

                int arFiltriBound = ArFiltri.Count;

                for (int y = 0; y < arFiltriBound; y++)
                {
                 // CERCO DI SCORRERE IL CONTENUTO DELL'ARRAYLIST
                    ArFiltri[y].ToString();
                 // MA CHIARAMENTE FUNZIONA SOLO CON LA SECONDA STRADA (vedi sopra)
                 // E CON LA PRIMA MI STAMPA A VIDEO SOLO System.String[,]
                }

    }



Sono nuovo del mondo C#, e in questi due giorni ho sfogliato tutta la documentazione che potevo... ma niente da fare. Sarò tonto, non so.

Qualsiasi aiuto sarebbe prezioso, grazie!

Al
Modificato da aldiorio il 03 novembre 2006 12.08 -
4 messaggi dal 27 settembre 2006
Va beh, grazie lo stesso....
26 messaggi dal 20 luglio 2005
Il problema è che per estrarre dati dall'Arraylist devi fare il cast esplicito;
facendo un ToString() di un array multidimensionale è normale che ti ritorni quel messagio!

Comunque rifacendomi al tuo esempio(non ho capito perchè usi un array bidimensionale quando basterebbe un array di stringhe normale):

......

string[] tmp;
foreach (DataRow row in ds.Tables["SQL"].Rows)
{
// METTO I DATI DEL DS IN UNA VARIABILE DI TIPO ARRAY
tmp=new string[3];

tmp[0]= row["A"].ToString();
tmp[1]= row["B"].ToString();
tmp[2]= row["C"].ToString();
// Inserisco l'oggetto nella'array
ArFiltri.Add(tmp);
}
lblStatus.Text="";
//ESEMPIO RECUPERO DATI
for(int i=0;i<ArFiltri.Count;i++)
{
//CAST ESPLICITO
tmp[]=(string[])ArFiltri[i];
lblStatus.Visible = true;
lblStatus.Text += tmp[0] + "<br/>";
}

P.S. la stessa cosa varrebbe nel caso inserissi arraymultidimensionali
string [,] tmp2;
tmp2=(string[,])ArFiltri[0];
4 messaggi dal 27 settembre 2006
Grande! Grazie mille davvero, era proprio quello di cui avevo bisogno!

Mi rimane solo un dubbio:


P.S. la stessa cosa varrebbe nel caso inserissi array multidimensionali
string [,] tmp2;
tmp2=(string[,])ArFiltri[0];


Ma scrivendo ' tmp2=(string[,])ArFiltri[0]; ' cosa vado a tirare su di preciso? La seconda dimensione dov'è?

Grazie davvero!

Ciao!

Al
26 messaggi dal 20 luglio 2005

Mi rimane solo un dubbio:

Ma scrivendo ' tmp2=(string[,])ArFiltri[0]; ' cosa vado a tirare su di preciso? La seconda dimensione dov'è?

Grazie davvero!

Ciao!

Al


Il mio P.S. valeva solo nel caso tu inserissi nell'ArrayList un array bidimensionale:

string[,] tmp2;
foreach (DataRow row in ds.Tables["SQL"].Rows)
{
tmp2=new string[2,2];
tmp2[0,0]=row["A"].ToString();
tmp2[0,1]=row["B"].ToString();
tmp2[1,1]=row["C"].ToString();
tmp2[1,1]=row["D"].ToString();
ArFiltri.Add(tmp2)
}
//A questo punto essendci nell'arrayList array bidimensionali
//quando estraggo i dati devo fare il cast corretto
tmp2=(string[,])ArFiltri[0];

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.