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 :

Lire les données d'un DataSet


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut Lire les données d'un DataSet
    Bonjour !

    Pour un projet Web, je lis des données contenues dans une BdD.
    Pour celà, je commence par remplir une DataTable (on l'appellera dt) qui sert ensuite à remplir un DataSet (ds). J'affiche enfin les données dans un DataGrid (dg).

    Je donne la possibilité aux utilisateurs de sélectionner l'une des lignes avec des RadioButton (je me base sur cette solution : http://aspnet.4guysfromrolla.com/articles/122602-1.aspx).

    Je peux récupérer facilement l'index de la ligne cochée... mais je ne sais pas comment récupérer les données qui lui correspondent !
    J'ai trouvé des choses de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    TextBox1.Text = dg.Items.Cells[0].Controls[0].Text;
    
    mais la collection Cells n'existe pas...

    Quelqu'un peut-il m'éclairer ?
    La méthode est sûrement toute bête... mais je ne la trouve pas

    Merci d'avance !

    Alban

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Par défaut
    salut,

    et avec ça :
    ?...

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    Beeen...
    'System.Web.UI.WebControls.DataGridItemCollection' ne contient pas de définition pour 'Rows'
    J'ai raté quelque chose dans mes définitions ? Mes appels de références ?

    En fait, la collection Rows existe bien dans le DataTable, on peut l'appeler par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataRow MaLigne = dt.Rows[i];
    Mais en fait, systématiquement, l'application me dit que le Datatable est vide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox1.Text = dt.Rows.Count.ToString();
    me renvoie 0.

    Je trouve ça d'autant plus bizarre que jamais je ne vide la table (la dernière opération que je fais est une opération de "remplissage"), que sa portée est globale (toute la classe, pas seulement une méthode) et que le remplissage du DataGrid se passe très bien.

  4. #4
    Invité de passage
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1
    Par défaut Hello
    Peux tu mettre une partie de ton code afin que je puisse l'arranger?

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Par défaut
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     // Conteneurs de données
    DataTable dt = new DataTable("dt");
     
    private void btnRecherche_Click(object sender, System.EventArgs e)
    {
    // COLONNES
    // Type d'affaire
    DataColumn col_ctyp_aff = new DataColumn("Type");
    col_ctyp_aff.DataType = Type.GetType("System.String");
    col_ctyp_aff.Caption = "Type";
    // Numéro d'affaire
    DataColumn col_naff = new DataColumn("Numéro d'affaire");
    col_naff.DataType = Type.GetType("System.String");
    col_naff.Caption = "Numéro d'affaire";
    // Ajout
    dt.Columns.Add(col_ctyp_aff);
    dt.Columns.Add(col_naff);
    // Lignes
    DataRow mRow;
    string __requete = "SELECT champ1,champ2 FROM table";
    OracleDataReader dr = (OracleDataReader)DAO.ExecuteReader(Config.ConnString, CommandType.Text, __requete);
    mRow = dt.NewRow();
    mRow[0] = "Nouveau";
    mRow[1] = "–";
    dt.Rows.Add(mRow);
    do
    {
    while (dr.Read())
    {
    mRow = dt.NewRow();
    mRow[0] = dr.GetString(0); 
    mRow[1] = dr.GetString(1);
    dt.Rows.Add(mRow);
    }
    } while (dr.NextResult());
    dr.Close();
    ds.Tables.Add(dt);
    dg.DataSource = ds;
    dg.DataBind();
     
    }
     
    private void Button1_Click(object sender, System.EventArgs e)
    {
    RowSelectorColumn rsc = RowSelectorColumn.FindColumn(dg);
    int choix;
    foreach( Int32 selectedIndex in rsc.SelectedIndexes ) 
    {
    choix = selectedIndex;
    // Reste à extraire les données
    }
    }
    Hop !

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Pour récupérer les données d'une ligne, il me semble qu'il vaut mieux utiliser quelquechose de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataRow row = ((DataRowView)dg.Items[index].DataItem).Row;
    ainsi on récupère directement le DataRow auquel est lié la ligne sélectionnées dans le DataGrid.

    Il est toutefois étrange que ta table soit apparemment vide



    Petites remarques sur ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    do
    {
    while (dr.Read())
    {
    mRow = dt.NewRow();
    mRow[0] = dr.GetString(0); 
    mRow[1] = dr.GetString(1);
    dt.Rows.Add(mRow);
    }
    } while (dr.NextResult());
    plus simplement, puisque tu récupères le résultat d'une seule requête (le dr.NextResult() sert à passer au résultat de la requête suivante dans le cas où on aurait envoyé une requête multiple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while (dr.Read())
    {
    mRow = dt.NewRow();
    mRow[0] = dr.GetString(0); 
    mRow[1] = dr.GetString(1);
    dt.Rows.Add(mRow);
    }
    et éventuellement tu pourrais ajouter un AcceptChanges() à la fin... à toi de voir ce que tu veux faire de ta DataTable...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ds.Tables.Add(dt);
    dg.DataSource = ds;
    dg.DataBind();
    Ça marche, ça ? Ça m'étonne que tu ne précises pas à quelle table dans ton DataSet tu lies ton GridView (propriété DataMember par exemple)... (et tiens, où est défini ds ?)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/05/2012, 09h40
  2. Problème pour lire les donnée d'une table externe
    Par mardoch dans le forum SQL*Loader
    Réponses: 6
    Dernier message: 17/07/2008, 16h41
  3. lire les données sur un port RS232
    Par xave dans le forum Langage
    Réponses: 6
    Dernier message: 06/10/2005, 16h40
  4. [VB+Lotus Notes] Lire les données d'une DB Lotus
    Par kenn dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 25/08/2005, 15h21
  5. [CR] lire les données de gauche a droite
    Par speed034 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 14/10/2004, 18h23

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