none
Affichage DataGridView RRS feed

  • Question

  • J’ai un problème avec l’exécution de la procédure suivante :

        Private Sub PosHistory()

            Dim DateFrom As Date = CDate(tsFrom.Text & " 00:00:00")

            Dim DateTo As Date = CDate(tsTo.Text & " 23:59:59")

            Dim dtList As DataTable

            dtList = GetDataTable(ConnString, CommandType.StoredProcedure, "Pos_History", New SqlParameter("@DateFrom", DateFrom), New SqlParameter("@DateTo", DateTo))

            With DataGridViewList

                .DataSource = Nothing

                .Columns.Clear()

                .DataSource = dtList

            End With

        End Sub

     

    La DataTable contient environ 1.000 enregistrements.

    Lors de sa première exécution, l’affichage du datagridview est instantané.

    Lors des exécutions suivantes, après avoir changé la valeur d’un paramètre, il faut attendre environ 1 minute avant l’affichage (même nombre d’enregistrements).

    Le temps d’attente se passe pour l’exécution de la ligne : « .DataSource = dtList »

    Merci de me dire ce qu’il faudrait faire pour que chaque appel à cette procédure soit considéré comme le premier.

    mardi 3 mars 2015 17:10

Réponses

Toutes les réponses

  • Bonjour,

    Dans votre méthode GetDataTable, y'a pas de Linq ce qui signifierait que l'appel à la base de données ne s'effectue réellement que lors de .DataSource = dtList ?


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    mercredi 4 mars 2015 08:17
  • Bonjour,

    Pour simplifier, je n'ai pas mis le code qui est derrière "getdatatable"

    Mais c'est bien dans cette dernière procédure que se fait l'appel à la base de données et que le datatable se remplit.

    Si l'on affiche le nombre de records présents dans la datatable dtList avant la ligne "With DataGridViewList", on a bien le nombre exact de records à afficher.

    Merci d'avance.

    mercredi 4 mars 2015 08:25