Salut,
Je rempli un DatagridView à partir d'un fichier XML. Avec moins de 100 lignes et 10 colonnes pas de problème.
Mais à 1000, 1500 lignes cela devient très lent.
Ci joint le code qui me permet de remplir mon dtgv :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
while (reader.Read())
{
if (reader.Name.Equals("Lignes"))
{
node = doc.ReadNode(reader);
int ligne = 1;
int numLigne = Int32.Parse(node.Attributes.GetNamedItem("nombre").Value);
int nbcol = 0;
this.Rows.Add(numLigne);
foreach (XmlNode Fils in node.ChildNodes)
{
if (Fils.Name.Equals("Ligne"))
{
this.Rows[ligne - 1].Cells[0].ToolTipText = "1";
this.Rows[ligne - 1].Cells[1].ToolTipText = ligne.ToString();
foreach (XmlNode ligneNode in Fils.ChildNodes)
{
int colonne = Int32.Parse(ligneNode.Attributes.GetNamedItem("index").Value);
String valeur = ligneNode.Attributes.GetNamedItem("valeur").Value.ToString() ;
if (valeur != "null")
{
valeur = valeur.Replace("\\Ampersand", "&");
this.Rows[ligne - 1].Cells[colonne].Value = valeur;
}
}
ligne = ligne + 1;
}
else MessageBox.Show("Nom de noeud inconnu : " + reader.Name);
}
}
}
reader.Close(); |
Cela marche très bien jusqu'à qq centaines de lignes. J'ai profilé le code et visiblement ce qui prend du temps c'est :
this.Rows[ligne - 1].Cells[colonne].Value = valeur;
Comment peut 'on accélérer les choses ?
Par avance merci de votre aide.
Partager