begin process at 2010 02 10 11:53:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C#

 > 

Archives

 > 

Base de données

 > 

Problème de Datagrid


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de Datagrid

mercredi 18 janvier 2006 à 10:14:49 | Problème de Datagrid

Im a FBI agent

Bonjour,
j'ai un problème pour remplir une datagrid, voici mon code:

            ArrayList prenoms= new ArrayList();
            ArrayList ages = new ArrayList();

            prenoms.Add("Gustave");
            prenoms.Add("Robert");
            ages.Add("57");
            ages.Add("46");

            DataSet ds = new DataSet();

            DataTable table = ds.Tables.Add("TABLE");

            table.Columns.Add("Prenom", typeof(string));
            table.Columns.Add("Age", typeof(string));

            foreach(string prenom in prenoms)
            {
                ds.Tables["TABLE"].Rows.Add(new object[]{prenom});
            }

            foreach(string age in ages)
            {
                ds.Tables["TABLE"].Rows.Add(new object[]{age});
            }

            dataGrid1.DataSource = ds.Tables["TABLE"];


Le problème est que toutes les données se remplissent dans la 1ère colonne, Si quelqu'un a une petite idée pour changer de colonne... Merci


mercredi 18 janvier 2006 à 10:43:58 | Re : Problème de Datagrid

MorpionMx

Membre Club Administrateur CodeS-SourceS
Bonjour,

C'est normal, car a chaque iteration de foreach, tu ajoutes une ligne dans ton DataTable.
Ce qu'il faudrait que tu fasses, c'est simplement creer une classe Personne, qui aurait comme Propriétés Nom et Age. Ensuite, tu instancies une occurence de Personne en lui fournissant son nom et son age via le constructeur.
Et finalement, tu utilises un ArrayList contenant tes instances comme Datasource de ton Datagrid.



Mx
MVP C# 
mercredi 18 janvier 2006 à 11:46:36 | Re : Problème de Datagrid

Im a FBI agent

Re,
Ca na marche pas avec ce que tu m'as dit, le datagrid est vide.
Et quand je rentre des String dans le Arraylist, le datagrid affiche la longueur de mes String.

Est-ce qu'il y aurait un moyen de choisir la colonne que l'on veut remplir de lignes?
mercredi 18 janvier 2006 à 11:59:37 | Re : Problème de Datagrid

MorpionMx

Membre Club Administrateur CodeS-SourceS
Ce code fonctionne parfaitement



using System;
using System.ComponentModel;
u
sing System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace
WindowsApplication1
{
   public class Form1 : Form
   {
      private System.Windows.Forms.DataGrid dataGrid1;

      public Form1()
      {
         InitializeComponent();
         ArrayList personnes = new ArrayList();
         personnes.Add(
new Personne("gustave", 57));
         personnes.Add(
new Personne("robert", 46));
         dataGrid1.DataSource = personnes;
      }

   private void InitializeComponent()
   {
      this.dataGrid1 = new System.Windows.Forms.DataGrid();
      this.SuspendLayout();
      this.dataGrid1.DataMember = "";
      this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
      this.dataGrid1.Location = new System.Drawing.Point(12, 12);
      this.dataGrid1.Name = "dataGrid1";
      this.dataGrid1.Size = new System.Drawing.Size(268, 242);
      this.dataGrid1.TabIndex = 0;
      this.Controls.Add(this.dataGrid1);
      this.ResumeLayout(false);
   }
 }

   public class Personne
   {
      private string nom;
      private int age;
      
      public
string Nom
      {
         get { return this.nom; }
      }      

      public
int Age
      {
         get { return this.age; }
      }   

      public
Personne(string nom, int age)
      {
         this.nom = nom;
         this.age = age;
      }
   }
}



Ensuite, a toi de voir et de l'adapter, selon si tu as vraiment besoin d'utiliser un Dataset et ce que tu veux faire des données affichées dans la grille .

Mx
MVP C# 

mercredi 18 janvier 2006 à 15:05:39 | Re : Problème de Datagrid

Im a FBI agent

Merci, ça marche.
Par contre, avec le dataset (ou la datatable (en fait je ne sais pas trop comment ça fonctionne)), lorqu'on clique sur le titre de la colonne, ça organise par ordre alphabétique, ou ordre croissant des chiffres. Et avec ton exemple ça ne le fait plus.
J'ai besoin de cette fonctionnalité.

Est-ce que c'est possible avec le code que j'ai mis plus haut? seulement en choisissant la colonne dans laquelle je veux insérer les lignes.
mercredi 18 janvier 2006 à 15:30:27 | Re : Problème de Datagrid

MorpionMx

Membre Club Administrateur CodeS-SourceS
Pour passer avec le dataset comme tu le faisais, et conserver le tri, tu peux faire ainsi :
(En gardant la classe Personne)



ArrayList personnes = new ArrayList();
personnes.Add(
new Personne("gustave", 57));
personnes.Add(
new Personne("robert", 46));
DataSet ds = new DataSet();
ds.Tables.Add(
"TABLE1");
ds.Tables[
"TABLE1"].Columns.Add("nom");
ds.Tables[
"TABLE1"].Columns.Add("age");
foreach (Personne p in personnes)
{
   ds.Tables[
"TABLE1"].Rows.Add(new object[] { p.Nom, p.Age });
}
this.dataGrid1.DataSource = ds;


Mx
MVP C#
 

mercredi 18 janvier 2006 à 15:51:33 | Re : Problème de Datagrid

Im a FBI agent

Réponse acceptée !
Merci beaucoup, c'est parfait!!! J'ai juste remplacé le Dataset par une DataTable et ça marche. Avec le Dataset, il fallait cliquer pour ouvrir la table. C'est exactement ce qu'il me fallait. Encore merci

ArrayList personnes = new ArrayList();
personnes.Add(new Personne("gustave", 57));
personnes.Add(new Personne("robert", 46));
DataTable table = new DataTable("TABLE1");
table.Columns.Add("nom");
table.Columns.Add("age");
foreach (Personne p in personnes)
{
    table.Rows.Add(new object[] {p.Nom, p.Age});
}
this.dataGrid1.DataSource = table;


Cette discussion est classée dans : problème, table, arraylist, add, ds


Répondre à ce message

Sujets en rapport avec ce message

Problème Connection BD [ par maevacmoi ] Hello !J'ai un problème, je n'arrive pas à accéder (en C# depuis un webservice) aux données d'une base de données access, pouvez-vous m'aider ? En fai Déplacer des Rows d'une table à l'autre dans une meme base [ par corine ] Salut,j'ai un problème pour couper des Lignes dans une table et les coller dans un autre...j'ai essayer avec ImportRow ça ne fait absolument rien (je Table à 2 axes [ par bip98 ] Table à 2 axes   <P class=MsoNormal style="MARGIN: 0cm Problème avec ArrayList [ par emmanuel9 ] Bonjour à tous, J'ai une arraylist de Personne et en faite a partir de cette ArrayList je veux créez un tableau d'entier avec les id des personnes m sql command problème [ par Fildomen ] Salutje veux selectionner d'une base les cellules qui sont classés de 1000 à 1100 après d'avoir appliquer un order by, comment faire??? je m'explique: problem xml [ par 24 ans ] ce code me permet d'ajouter mes element  cel en rouge ds le fichier xml "data"mais il m'ajoute ces donnees ds un  autre tableau or moi j'ai un seul ta Serialisation + gros problème [ par emmanuel9 ] Salut à tous, Mon problème est que j'ai une instance de la classe Donnees (qui contient une arraylist de personne) et qui s'apelle bdd. Mon instance Problème avec base de données [ par emmanuel9 ] Bonjour à tous, Mon problème vient du faite que j'ai plusieurs tables dans une base de données dont une table personne et j'ai un programme qui ecrit Remplir un comboBox avec un arrayList [ par francesdereve ] J'ai eassayé les 3 solutions proposées ca ne marche pas1ere solution: foreach(string str in p</F Tableau 2 dimensions de taille variable [ par titio ] Bonjour,Je crée un ArrayList contentant des ArrayList, mais je ne sais pas comment acceder aux données aprés...exemple; tabCarte = new ArrayList();


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales