Bonjour
Suite à mon code ci-dessous
la ligne rouge me met environ 10 secondes pour m'afficher 1700 lignes environ dans le datagridview (DBG_LAgents).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 OdbcCommand dataSQL = new OdbcCommand(macommande, GO_Init.conn); OdbcDataReader read = dataSQL.ExecuteReader(); DataSet ds = new DataSet(); DataTable dt = new DataTable("Table1"); ds.Tables.Add(dt); dt.Clear(); ds.Tables[0].Clear(); DBG_LAgents.DataSource = null; DBG_LAgents.AutoGenerateColumns = false; DBG_LAgents.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); ds.Load(read, LoadOption.PreserveChanges, ds.Tables[0]); Cursor.Current = Cursors.WaitCursor; DBG_LAgents.SuspendLayout(); DBG_LAgents.DataSource = ds.Tables[0]; DBG_LAgents.ResumeLayout(); Cursor.Current = Cursors.Default;
Je reprends en fait une vieille appli VB5 (qui tourne encore à l'heure où je vous parle chez des clients) pour l'écrire en C#.
La requête utilisée est une procédure stockée qui met moins d'une seconde à s'afficher dans l'analyseur de requête (sql server 2008 R2) et qui met moins de deux secondes dans VB5 (lié à un truedbgrid, d'où le nom du tableau DBG_LAgents, je garde les mêmes noms d'objets entre le code VB et c#).
J'ai vu qu'on pouvait utiliser le mode virtual du datagridview, mais j'avoue ne rien y comprendre à cette méthode.
Quand aux suspendlayout et resumelayout, rien y fait.
Merci pour votre aide bienvenue.
Partager