J'écris une application dans laquelle je charge deux DataGridViews à partir d'une base de données. J'ai réussi cela en utilisant un dataAdapter.Fill (DataSet), mais le problème que j'avais était que les données provenant de la base de données ont 10s de milliers d'enregistrements. C'est très lent (trop lent, environ 7 minutes) la première fois qu'il est couru. La prochaine fois qu'il fonctionne le temps est plus raisonnable (environ 35 secondes). Alors j'ai pensé que j'essaierais une autre approche: Charger un arraylists bidimensionnel avec les données puis le passer dans les datagridviews. À l'origine je pensais que ce serait un test rapide pour voir le gain de temps, le cas échéant, mais il s'est avéré être plus difficile que je pensais. Voici ce que j'ai:Problèmes lors du chargement d'un DataGridView avec une arrayList bidimensionnelle
while(dr.Read())
{
for (int l = 0; b && l <= dr.FieldCount-1; l++)
{
DataGridViewColumn column = new DataGridViewColumn();
column.CellTemplate = cellTemplate;
column.FillWeight = 1;
column.Name = dr.GetName(l);
dgv.Columns.Add(column);
}
b = false;
for (int i = 0; i <= dr.FieldCount - 1; i++)
{
row.Add(dr.GetValue(i));
}
table.Add(row);
row = new System.Collections.ArrayList();
}
dgv.DataSource = table;
Remarque, je voudrais créer une classe pour construire dans les données (un membre de données pour chaque colonne, mais les colonnes pourrait changer) ainsi l'idée arrayList. Le datagridview finit par avoir les colonnes correctes, avec les noms corrects, et le ou les nombre (s) correct (s), cependant les lignes sont toutes vides et il a ajouté des colonnes supplémentaires relatives à la structure de arrayList. Qu'est-ce que je fais mal? Y a-t-il un meilleur moyen? Toute aide/rétroaction aurait apprécié! :-)
Merci,
Ben