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

Windows Forms Discussion :

Comment vider les enregistrements d'une DataTable ?


Sujet :

Windows Forms

  1. #1
    Membre habitué Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Points : 128
    Points
    128
    Par défaut Comment vider les enregistrements d'une DataTable ?
    Salut à tous !
    Ben voilà tout est dans le titre ! Dans mon application j'ai une ComboBox qui a pour source une DataTable. Cette DataTable a deux colonnes qu'elle récupère sur une base de données Oracle !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    DataTable maDataTable = new DataTable();
     
    OleDbDataAdapter monDataAdapter = new OleDbDataAdapter(maRequete, "Provider=msdaora;Data Source=" + serveurBD + ";User ID=" + utilisateurBD + ";Password=" + mdpBD + ";");
     
    monDataAdapter.Fill(maDataTable);
     
    maDataTable.Columns[0].ColumnName = "Identifiant";
    maDataTable.Columns[1].ColumnName = "Libelle";
    maComboBox.DataSource = maDataTable;
    maComboBox.DisplayMember = "Libelle";
    maComboBox.ValueMember = "Identifiant";
    La requête ne change jamais mais elle peut s'appliquer à des bases différentes (qui évidemment contiennent la même table avec les mêmes champs...). La mise à jour de la DataTable n'est pas compliquée mais si l'utilisateur saisi le mauvais mot de passe et que la connexion à la base n'est pas possible, je voudrais que la DataTable se vide et vide ainsi ma ComboBox histoire que l'utilisateur ne croit pas qu'il est connecter !
    En sachant également qu'il n'est pas possible de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maComboBox.Items.Clear()
    sur une ComboBox qui dispose d'une DataSource.
    Pour l'instant la solution que j'adopte c'est de déconnecter la DataTable de la ComboBox (maComboBox.DataSource = null;), nettoyer la ComboBox (maComboBox.Items.Clear();) et reconnecter les deux ensemble (maComboBox.DataSource = maDataTable;). Vous avouerez que c'est pas très joli...
    Merci à vous pour vos idées et votre reflexion !!!
    Antoine
    "Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire." Voltaire

  2. #2
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maComboBox.DataSource = null;
    Ceci devrait suffire.

  3. #3
    Membre habitué Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Points : 128
    Points
    128
    Par défaut
    Bonjour et merci de ta réponse Abelman !
    Cependant il me semble que ce code à pour conséquence de déconnecter la DataTable avec la ComboBox. Moi j'aimerai plutôt vider la DataTable car avec ta méthode, je suis obligé ensuite de reconnecter la DataTable.
    Ca marche, ca y'a pas de soucis mais c'est zéro optimisation...
    Merci, @+
    Antoine
    "Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire." Voltaire

  4. #4
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Et DataTable.Clear ???

  5. #5
    Membre habitué Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Points : 128
    Points
    128
    Par défaut
    Le DataTable.Clear(); efface toutes les informations de la DataTable, y compris les colonnes !
    Je serai obliger de refaire ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    maDataTable.Columns[0].ColumnName = "Identifiant";
    maDataTable.Columns[1].ColumnName = "Libelle";
    Je pense que je fais finir par opter pour une de ces solutions mais je pensais qu'on pouvait effacer facilement tous les enregistrements de la DataTable. Un peu comme un DELETE FROM maTable; en SQL.
    Merci quand même et @+
    Antoine
    "Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire." Voltaire

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 374
    Points : 451
    Points
    451
    Par défaut
    Bonjour,
    la méthode clear de datatable supprime toutes les lignes de la table et pas les colonnes.(les colonnes font partie du schéma da le table).
    Une autre solution, plus contraignante
    utiliser la methode clear du datarow, mais cela implique une lecture complète de la table.
    Bon boulot Jean

  7. #7
    Membre actif Avatar de DarkMolo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Maroc

    Informations forums :
    Inscription : Juillet 2006
    Messages : 207
    Points : 277
    Points
    277
    Par défaut
    Salut,
    Tu peux utiliser, maDataTable.Rows.Clear(), c'est sûr que ça ne supprimme que les lignes et ne touche pas au shémas de la DataTable.
    Certified SCJP 5.0 / SCWCD 5.0 / SCEA 5.0
    C'est une grande folie de vouloir être sage tout seul.
    Duc de La Rochefoucauld

  8. #8
    Membre habitué Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Points : 128
    Points
    128
    Par défaut Merci mais...
    Bonjour et Merci de toutes vos réponses, en effet maDataTable.Rows.Clear() n'efface que les lignes de la DataTable. Donc c'est ce que je veux !!!
    Cependant ma ComboBox ne se met pas à jour, c'est à dire ne se vide pas... J'ai tenté maComboBox.Update(), maComboBox.Refresh() rien n'y fait, elle ne veux pas se vider... Je ne peux pas faire maComboBox.Items.Clear() vu que j'ai une DataSource !
    Est que vous avez des idées ?
    Merci, ++
    Antoine
    "Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire." Voltaire

  9. #9
    Membre habitué Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Points : 128
    Points
    128
    Par défaut
    Re !
    En fait... Dans les conditions dans lesquelles j'utilise la ComboBox et la DataTable je ne pense pas que ce que je veux faire soit possible. Etant donné que je change de base de données, je suis obligé de recréer un DataAdapter. Ensuite je dois donc refaire monDataAdapter.Fill(maDataTable). Du coup je recréer une DataTable... Je sais pas si c'est optimal mais bon, je commence à en avoir marre et vu que ça marche, ça me vas !!!
    Merci à tous et à bientôt !
    Antoine
    "Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire." Voltaire

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/07/2014, 17h41
  2. Réponses: 0
    Dernier message: 08/04/2009, 01h55
  3. Réponses: 4
    Dernier message: 08/11/2006, 08h56
  4. Réponses: 3
    Dernier message: 12/10/2006, 13h23
  5. Réponses: 3
    Dernier message: 22/03/2006, 09h47

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