Bonjour

Suite à mon code ci-dessous
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;
la ligne rouge me met environ 10 secondes pour m'afficher 1700 lignes environ dans le datagridview (DBG_LAgents).

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.