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 :

explications sur datatable


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 166
    Par défaut explications sur datatable
    bonsoir

    j'ai une petite question :

    j'ai une datatable pour laquelle si la valeur d'une cellule de colonne "toto" est égale à "999" j'efface la ligne

    mais ce qui est étrange c'est que je regarde le datable.rows.count avant et après mon delete et je trouve la même valeur pour le count

    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
    27
    28
            private void TriCommande(DataGridView datagridview)
            {
                try
                {
                    String valueCell = "";
                    DataTable table = new DataTable();
                    table = (DataTable)datagridview.DataSource;
     
                    Console.WriteLine(table.Rows.Count.ToString());
     
                    foreach (DataRow row in table.Rows)
                    {
                        valueCell = row["toto"].ToString();
                        if (valueCell == "999")
                        {
                            row.Delete();
                        }
                    }
     
                    Console.WriteLine(table.Rows.Count.ToString());
     
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
     
            }
    pourquoi ?

    (pour info l'affichage de ma datatable dans un datagridview est correct)

    par contre ensuite je suis obligé de gérer l'événement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (row.RowState != DataRowState.Deleted)
    pour ne pas avoir le message d'erreur suivant :
    Impossible d'accéder via la ligne aux informations de la ligne supprimée
    comment faire pour que quand je supprime une ligne de ma datatable le count tienne compte de mes delete ?

    merci

    @++

    KaloOopS

  2. #2
    Membre averti
    Profil pro
    Ingenieur étude et développement
    Inscrit en
    Décembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur étude et développement

    Informations forums :
    Inscription : Décembre 2009
    Messages : 29
    Par défaut
    Voici une solution possible (du moins je pense, à surligner pour la voir)
    J'ai essayé de reproduire ton environnement rapidos

    Ce que je peux te proposer avant de lire le code c'est de réfléchir à ça :
    - Je commence par récupérer les lignes que je veux supprimer (dans une liste de ....., je te laisse trouver)
    - Je supprime, dans une boucle différente les lignes qui m'intéresse (il est interdit de modifier l'objet que tu utilises dans une boucle)

    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
                string valuecell = String.Empty;
                DataTable datatable = (DataTable)dataGridView1.DataSource;
                List<DataRow> datarows = new List<DataRow>();
    
                //Recherche des lignes à supprimer
                foreach (DataRow row in datatable.Rows)
                {          
                    valuecell = row["Patient"].ToString();
                    if (valuecell == "David")
                        datarows.Add(row);
                }
    
                //On supprime au fur et à mesure les lignes qui ne nous intéresse pas
                foreach (DataRow row in datarows)
                {
                    datatable.Rows.Remove(row);
                }  

  3. #3
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Tu peux aussi utiliser Linq en passant par AsEnumerable.


    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
    DataTable search = FillDatas().AsEnumerable()
    							.Where(d=>Convert.ToDouble(d["toto"]) == 999)
    				.CopyToDataTable();				
     
    static DataTable FillDatas()
    		{
    			DataTable dt = new DataTable();
    			dt.Columns.Add("toto",typeof(double));
     
    			for(int i =0;i<10000;i++)
    			{
    				DataRow r = dt.NewRow();
    				r["toto"] = i;
    				dt.Rows.Add(r);
    			}
     
    			return dt;
    		}
    il y a probablement d'autre moyens de récupérer une datatable filtré ou à jour avec une requête linq

Discussions similaires

  1. [Multimédia] Explication sur stream audio
    Par champion dans le forum Développement
    Réponses: 1
    Dernier message: 20/01/2005, 12h14
  2. Besoin d'explications sur float et l'élasticité !
    Par KneXtasY dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 14/01/2005, 15h15
  3. s.v.p :explication sur le ".h" et dll de l'opengl
    Par Asmod_D dans le forum OpenGL
    Réponses: 1
    Dernier message: 22/11/2004, 10h32
  4. Réponses: 28
    Dernier message: 18/08/2003, 11h54
  5. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18

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