IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

ADO.NET, Initialisation DataSet


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 59
    Points : 50
    Points
    50
    Par défaut ADO.NET, Initialisation DataSet
    Bonjour,

    Je développe actuellement une petite application qui utilise une base de donnée SQL SERVER.

    J'utilise ADO.NET avec un DataSet, mes données sont affichées dans un DataGridView, qui est lié au DataSet avec la propriété DataSource.

    Lorsque je veux modifier les lignes affichées dans le DataGrid, j'appelle la méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monTableAdapter.Fill(monDataSet.TableAfficheeDansLeDataGrid);
    Cette méthode est appelée au chargement de l'application et dès qu'on veut changer les lignes affichées dans le DataGridView (le Fill est remplacé par un FillBy par exemple).

    Le problème est le suivant : lorsque l'on clique pour changer les lignes du DataGrid pas longtemps après que l'application se charge cela génère des exceptions (First Chance Exception : NullReferenceException in System.Windows.Forms.dll entre autres) comme si le Fill appelé au chargement de l'application interférait avec le Fill appelé au click.

    Et le délai augmente avec le nombre de lignes présentes dans la base.

    Je me demande donc si il n'y a pas un moyen de connaître l'état du DataSet/TableAdapter/DataGridView, pour savoir si l'initialisation/chargement est terminé pour éviter ce type d'exception.

    A noté qu'une fois ce délai de chargement initial passé, on peut switcher entre différent Fill sans avoir d'erreur, le problème est donc seulement à l'initialisation.

    J'ai épluché l'intelIsense mais n'ai rien trouvé encore .

    PS : Pas trouvé de titre plus évocateur !

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    J'ai pas compris toute l'histoire là
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 59
    Points : 50
    Points
    50
    Par défaut
    Oki, c'est assez confus en effet je vais mettre directement le code.
    Donc l'application est un lecteur mp3 avec un DataGridView pour afficher les morceaux et un TreeView pour sélectionner différentes playlists.

    Pour remplir le DataGridView j'utilise la méthode située dans ma form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void FillDataGrid()
    {
    library.FillTracksAdapter();
    dataGridViewLibrairie.DataSource = library.Tracks();
    }
    library représente une instance de ma classe gérant les mises à jour avec la base :

    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
    class LibraryManager
     {
    private DataSet libraryDataSet;
    private DataSetTableAdapters.TracksTableAdapter tracksTableAdapter;
     
    public LibraryManager()
    {
    this.libraryDataSet = new DataSet();
    this.tracksTableAdapter = new DataSetTableAdapters.TracksTableAdapter();
    tracksTableAdapter.Fill(libraryDataSet.Tracks);
    }
     
    public DataTable Tracks()
    {
    return libraryDataSet.Tracks;
    }
     
    public void FillTracksAdapter()
    {
    tracksTableAdapter.Fill(libraryDataSet.Tracks);
    }
     
    }
    A chaque fois que l'on clique sur un noeud du treeview, le DataGridView est donc rempli en fonction avec un simple appel à FillDataGrid.

    Le problème est que si j'appel la méthode FillDataGrid dans Form1_Load, ou même dans le constructeur de la form et clique sur un noeud tout de suite apres le démarrage de l'applicationn une série d'erreur est générée :

    A first chance exception of type 'System.NullReferenceException' occurred in System.Windows.Forms.dll

    de 2 jusqu'à 10+ exceptions de ce type levées (tout dépend le nombre de morceaux présent dans la base en fait).

    Voila pour l'instant je contourne le problème en ne chargeant pas DataGrid au lancement de l'application (il est donc vide), pas génial ^^

  4. #4
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Juste une question c'est un truc que tu fais pour toi ou un TP ?
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

Discussions similaires

  1. [ADO.Net][C#/DataSet] Comment différer l'exécution de méthodes ?
    Par L`artiste dans le forum Accès aux données
    Réponses: 4
    Dernier message: 26/04/2006, 16h14
  2. [ADO.Net][VB.NET/C#]Comment importer .xls dans DataSet ?
    Par smedini dans le forum Accès aux données
    Réponses: 2
    Dernier message: 10/01/2006, 15h59
  3. [ADO.Net][C# 1.1]Comment réaliser relation pour 2 Dataset ?
    Par misa dans le forum Accès aux données
    Réponses: 2
    Dernier message: 07/01/2006, 06h55
  4. [ADO.NET] MAJ BDD à partir d'un DataSet d'un DataGrid
    Par bart64 dans le forum Accès aux données
    Réponses: 15
    Dernier message: 20/12/2005, 18h16
  5. [VB.NET] [ADO.NET] Adapter, TableMapping et DataSet xsd
    Par neo.51 dans le forum Accès aux données
    Réponses: 14
    Dernier message: 23/09/2004, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo