Prova a vedere tutto in modo lievemente diverso:
public class clsUtenti
{
public struct udtUtente
{
public string nome;
public string cognome;
...
public udtUtente(string n, string c, ...)
{
nome="";
cognome="";
...
}
public static DataTable getSchema()
{
DataTable result = new DataTable("LISTA_UTENTI");
result.Columns.Add(new DataColumn("nome"));
result.Columns.Add(new DataColumn("cognome"));
...
return result;
}
}
private ArrayList collUtenti;
public clsUtente() { collUtenti = new ArrayList(); }
public bool Add(udtUtente utente)
{
try { collUtenti.Add(utente); return true; }
catch { return false; }
}
public bool Remove(udtUtente utente)
{
try { collUtenti.Remove(utente); return true; }
catch { return false; }
}
public udtUtente Item(int index)
{
string errMsg = "Il parametro deve essere compreso tra 0 e " + collUtenti.Lenght;
if (index<0 || index>=collUtenti.Lenght) throw new ArgumentException(errMsg);
try { return (udtUtente)collUtenti[index]; }
catch { return null; }
}
public int Count { get { return collUtenti.Lenght; } }
public DataTable getAllUtenti()
{
DataTable result = udtUtente.getSchema();
for(int i=0; i<collUtenti.Leght; i++)
{
DataRow dr = result.newRow();
dr["nome"]=((udtUtente)collUtenti[i]).nome;
dr["cognome"]=((udtUtente)collUtenti[i]).cognome;
...
result.Rows.Add(dr);
}
result.AcceptChanges();
return result;
}
}
Fatta la classe nel codice per fare il bind lasci tutto invariato ma al posto che passare l'array nel datasource ci passi la riga di codice:
griglia.DataSource = istanzaClasseUtenti.getAllUtenti();
griglia.DataBind();
e come per magia funziona tutto.
Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Chief Solution Architect