none
label calcul datagridview RRS feed

  • Question

  • Bonjour,

     

    comment faire pour récuperer juste la valeur de toutes les lignes de la colonnes prix d'un datagridview puis faire que le label affiche la somme total?

    jor:

     

    for (int i= 0; i < nbreLigne; i++)

    {

    myVar = dataGridView1.currtentRow["price"].value();

     

    }

     

     

    myTotalPrice = myVar + myVar2 + myVar3;

     

    label.text = myTotalPrice

     

     

    Meilleures salutation

     

     

     

    Edit: Voici une ébauche:

     

    for (int i = 0; i < kryptonDataGridView1.Rows.Count; i++)

    {

    //TODO: Comment faire pour récuperer la valeur de la colonne prix pour chaque ligne?

    statusStrip1.Text = "Prix total: " + fTotalPrice.ToString() + "CHF";

    }

     

    Edit 2: Selon csharpfr, j'ai essayé ceci:

    for (int i = 0; i < kryptonDataGridView1.Rows.Count; i++)

    {

    string sPrice;

    //TODO : Comment faire pour récuperer la valeur de la colonne prix pour chaque ligne?

    sPrice = this.kryptonDataGridView1[2, 3].Value.ToString();

    statusStrip1.Text = "Prix total: " + sPrice + "CHF";

    }

     

     

    Cependant, je vois pas ce que vient foutre ici 2, 3 et jsais meme pas ce que ca veut dire xD.

     

    Je n'ai pas encore les choses assez en main pour testé si sa fonctionne.

     

    Meilleures salutation

    vendredi 25 avril 2008 07:40

Toutes les réponses

  • Bloup bloup,

     

    Et pourquoi pas un truc dans ce genre ?

     

    Code Snippet

    DataTable table = (DataTable)dataGridView1.DataSource;

    Int32 totalPrice=0;

    foreach (DataRow row in table.Rows)

    {

    totalPrice += Int32.Parse(row["price"].ToString());

    }

    label1.Text = totalPrice.ToString();

     

     

     

    Tiens au passage tu peux télécharger ce zip:

    http://garadel.dnsalias.net/casts/bonsoir.zip

    C'est le fameux tutoriel dont je t'ai parlé (je vais le mettre sur youtube dès que possible car c'est très lent à télécharger [50mo]sinon tu peux aussi essayer http://garadel.dnsalias.net/casts/bonsoir.html)

    vendredi 25 avril 2008 08:05
  • Salut,

     

    Voici donc la fonction LOAD de ma form:

     

    private void frmViewDetailRecette_Load(object sender, EventArgs e)

    {

    //TODO : Coder fonction SELECT + COUNT

    dataBase mydatabase = new dataBase("localhost", "theproject", "root");

    bool connectionStatus = mydatabase.updateAll("SELECT * FROM xdb_recetteComposant WHERE xdb_recette.id=" + kryptonDataGridView1.CurrentRow.Cells["Id"].Value.ToString() + "Wink");

    kryptonDataGridView1.Columns["catName"].Visible = false;

    kryptonDataGridView1.Columns["category"].Visible = false;

    kryptonDataGridView1.Columns["name"].HeaderText = "Nom";

    kryptonDataGridView1.Columns["price"].HeaderText = "Prix";

    DataTable table = (DataTable)kryptonDataGridView1.DataSource;

    Int32 totalPrice = 0;

    foreach (DataRow row in table.Rows)

    {

    totalPrice += Int32.Parse(row["price"].ToString());

    }

    toolStripStatusLabel1.Text = totalPrice.ToString();

    }

     

     

    Il me dit que cette ligne :

    bool connectionStatus = mydatabase.updateAll("SELECT * FROM xdb_recetteComposant WHERE xdb_recette.id=" + kryptonDataGridView1.CurrentRow.Cells["Id"].Value.ToString() + "Wink");

     

    n'est pas définis à une instance d'objet.

     

    Meilleures salutation

    vendredi 25 avril 2008 08:21
  • Hum normal!

     

    Tu est dans le load et je suppose donc que kryptonDataGridView1 ne contient encore aucun enregistrement. De plus il est fort possible qu'il ne puisse y avoir aucn appel à CurrentRow dans un LOAD( j'ai pas testé mais ça parait logique).

     

    A mon avis tu dois remplacer kryptonDataGridView1.CurrentRow.Cells["Id"].Value.ToString()  par autre chose.

    J'ai un peu décroché de ton code là (y a eut tellement d'échanges) mais je suppose que ça fonctionne comme ça:

     

    1 tu sélectionnes une recette dans ton formulaire précédente (d'où tu récupères l'ID)

    2 avec le clic sur un bouton tu ouvres: frmViewDetailRecette pour afficher les détails de la recette

     

    Si c'est bien ça je rajouterai une propriété à frmViewDetailRecette que j'appellerai IdRecette qui serait remplie par le formulaire principal avant l'affichage de frmViewDetailRecette et ensuite utilisé par ta requête.

    vendredi 25 avril 2008 09:33
  • C'est bien ça :}

     

    vendredi 25 avril 2008 09:56
  • Tu peux m'aider? (L) :}

    vendredi 25 avril 2008 11:03
  • Bonjour,

     

    En fait j'ai tout dis dans le post au dessus! Tout ce que je peux faire est te donner le code correspondant mais pour ça il faudrait que tu copies ici le code du bouton correspondant à l'appel de la form detail recette

     

    lundi 28 avril 2008 06:56
  • Salut,

     

    passé un bon week-end? J'ai regarder ta vidéo, mais mon navigateur a planter xD. Jvais la downloader ^^.

     

     

    Voici le code:

     

    private void kryptonDataGridView1_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)

    {

    frmViewDetailRecette _frmViewDetailRecette = new frmViewDetailRecette();

    _frmViewDetailRecette.Show();

    }

     

     

    Meilleures salutation

     

    edit: mmm.... me semble que ca fonctionne pas car je récupère pas la valeur id de la recette à voir en détaillé?

    lundi 28 avril 2008 07:02
  •  

    Bon tout d'abord voila le code du double click:

     

    Code Snippet

    frmViewDetailRecette _frmViewDetailRecette = new frmViewDetailRecette();

    _frmViewDetailRecette.IdRecette = kryptonDataGridView1.CurrentRow.Cells["Id"].Value;

    _frmViewDetailRecette.InitializeData();

    _frmViewDetailRecette.Show();

     

     

    Et ensuite le code de la form remanié:

     

    Code Snippet

    public partial class frmViewDetailRecette : Form

    {

    private Int32 _idRecette;

    public Int32 IdRecette

    {

    get { return _idRecette; }

    set { _idRecette = value; }

    }

    private void frmViewDetailRecette_Load(object sender, EventArgs e)

    {

    }

    public void InitializeData()

    {

    //TODO : Coder fonction SELECT + COUNT

    dataBase mydatabase = new dataBase("localhost", "theproject", "root");

    bool connectionStatus = mydatabase.updateAll("SELECT * FROM xdb_recetteComposant WHERE xdb_recette.id=" + IdRecette.ToString() + "");

    kryptonDataGridView1.Columns["catName"].Visible = false;

    kryptonDataGridView1.Columns["category"].Visible = false;

    kryptonDataGridView1.Columns["name"].HeaderText = "Nom";

    kryptonDataGridView1.Columns["price"].HeaderText = "Prix";

    DataTable table = (DataTable)kryptonDataGridView1.DataSource;

    Int32 totalPrice = 0;

    foreach (DataRow row in table.Rows)

    {

    totalPrice += Int32.Parse(row["price"].ToString());

    }

    toolStripStatusLabel1.Text = totalPrice.ToString();

     

     

    }

    }

     

     

     

    Tu remarqueras que j'ai déplacé l'initialisation de la form dans une focntion séparée car la propriété IdRecette n'est pas initialisée au moment du LOAD.

     

    Donc dans le premier code, je récupère l'ID de la recette sélectionnée de ce form et je la passe au form qui va être affichée par l'intermédiaire de la propriété.

     

    Dans le deuxième code la seule modification notable (hormis de ne pas le metttre dans le LOAD) est que j'utilise la propriété dans la requete.

     

    Pour la video: Vi j'ai pas mal de mes "testeurs" (aucun développeur donc c'est juste pour la forme) qui me l'on signalé. Je vais la télécharger sur youtube  (en privé) dès que possible (mais avec ce weekend je n'ai pas eut accès à un PC connecté.

     

     

    lundi 28 avril 2008 08:12
  • Salut,

     

    Voici l'erreur

    Erreur 4 Impossible de convertir implicitement le type 'object' en 'int'. Une conversion explicite existe (un cast est-il manquant ?) 

     

    Ligne:

    _frmViewDetailRecette.IdRecette = kryptonDataGridView1.CurrentRow.Cells["Id"].Value;

    et plus précisemment

    kryptonDataGridView1.CurrentRow.Cells["Id"].Value;

     

    Pour ta vidéo: Si tu désires que je te l'héberges, comme tes sites, tu sais que j'ai un domaine :]

     

    Faudra d'ailleurs on reparle du projet, j'ai un peu avancé.

     

    Pis j'ai changé mon msn si jamais, pas eu le temps de rajouté tout le monde: kiwi-projet@hotmail.com

     

    A+

     

     

    Edit: j'ai pu corrigé l'erreur:

     

    _frmViewDetailRecette.IdRecette = (int)kryptonDataGridView1.CurrentRow.Cells["Id"].Value;

     

    Je vais voir ce que sa donne.

    lundi 28 avril 2008 08:17
  •  

    Autant pour moi j'y ai pensé mais je ne savait plus si tu avais fixé les types des colonnes ou pas (il semblerai que non):

    Voici donc le le code:

    Code Snippet

    _frmViewDetailRecette.IdRecette = Int32.Parse(kryptonDataGridView1.CurrentRow.Cells["Id"].Value);

     

     

    Pour la vidéo: Il faudra voir ce que ça donne si tu l'héberges ou si on la mets sur youtube ce qui donneras le mieux en terme de débit.

    Ok pour le nouveau MSN je vais le rajouter à ma liste

    lundi 28 avril 2008 08:24
  • La référence d'objet n'est pas définie à une instance d'un objet.

     

     

    ligne:

     

    kryptonDataGridView1.Columns["catName"].Visible = false;

    kryptonDataGridView1.Columns["category"].Visible = false;

    kryptonDataGridView1.Columns["name"].HeaderText = "Nom";

    kryptonDataGridView1.Columns["price"].HeaderText = "Prix";

    DataTable table = (DataTable)kryptonDataGridView1.DataSource;

    Int32 totalPrice = 0;

    foreach (DataRow row in table.Rows)

    {

    totalPrice += Int32.Parse(row["price"].ToString());

    }

    toolStripStatusLabel1.Text = totalPrice.ToString();

     

     

    depuis la première ^^.  dans la form frmViewDetailRecette.

     

     

    lundi 28 avril 2008 08:27
  •  

    Oui normal en fait. J'ai recopié ton code mais comme je ne peux pas vraiment le compiler je passe à côté de "grosses" erreurs

     

    Après le updateAll il faut que tu rajoutes la ligne suivante:

     

    kryptonDataGridView1.DataSource = mydatabase.MyTable (heu je sais plus si c'est mytalbe ou mydataset ou table ou dataset .... mais bon je pense que tu comprends ce qu'il manque)

     

    lundi 28 avril 2008 09:33
  •  

    Hello,

     

    c'est myDataTable dans mon cas Wink

     

    public void InitializeData()

    {

    //TODO : Coder fonction SELECT + COUNT

    dataBase mydatabase = new dataBase("localhost", "theproject", "root");

    bool connectionStatus = mydatabase.updateAll("SELECT * FROM xdb_recetteComposant WHERE recette=" + IdRecette.ToString() + "");

    kryptonDataGridView1.DataSource = mydatabase.myDataTable;

    ...

    }

     

    erreur:

    La référence d'objet n'est pas définie à une instance d'un objet.

    ligne:

    kryptonDataGridView1.DataSource = mydatabase.myDataTable;

     

     

    :/ Meilleures salutations

    lundi 28 avril 2008 09:35
  •  

    Hum ....

     

    Un doute m'assaille: Dans cette frmViewDetailRecette tu as bien une kryptonDataGridView1 !!!

     

    Si oui je vois pas d'où peut venir l'erreur! (faudra que tu me donnes plus d'infos)

    lundi 28 avril 2008 09:58
  • Salut,

     

    ouep, ca y est. voici mes 2 form:

     

    frmViewRecette:

     

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Text;

    using System.Windows.Forms;

    using ComponentFactory.Krypton.Toolkit;

    namespace TheProject

    {

    public partial class frmViewRecette : ComponentFactory.Krypton.Toolkit.KryptonForm

    {

    public frmViewRecette()

    {

    InitializeComponent();

    }

    private void toolStripButton1_Click(object sender, EventArgs e)

    {

    frmNewRecette _frmNewRecette = new frmNewRecette();

    _frmNewRecette.Show();

    }

    private void frmViewRecette_Load(object sender, EventArgs e)

    {

    dataBase mydatabase = new dataBase("localhost", "theproject", "root");

    bool connectionStatus = mydatabase.SelectArome("SELECT * FROM xdb_recette;");

    kryptonDataGridView1.DataSource = mydatabase.myDataTable;

    kryptonDataGridView1.Columns["name"].HeaderText = "Nom";

    kryptonDataGridView1.Columns["id"].Visible = false;

    kryptonDataGridView1.Columns["price"].Visible = false;

    kryptonDataGridView1.Refresh();

    }

    private void toolStripButton2_Click(object sender, EventArgs e)

    {

    frmEditRecette _frmEditRecette = new frmEditRecette();

    _frmEditRecette.Show();

    }

    private void toolStripButton4_Click(object sender, EventArgs e)

    {

    dataBase mydatabase = new dataBase("localhost", "theproject", "root");

    //TODO : Coder fonction DELETE

    bool connectionDeleteStatus = mydatabase.updateAll("DELETE FROM xdb_recette WHERE id=" + kryptonDataGridView1.CurrentRow.Cells["Id"].Value.ToString() + ";");

    if (connectionDeleteStatus == false)

    {

    //remplacer cette ligne par une écriture dans un log à l'avenir

    }

    kryptonDataGridView1.Refresh();

    MessageBox.Show("La recette à été supprimé avec succès", "Supression de recette", MessageBoxButtons.OK, MessageBoxIcon.Information);

    }

    private void kryptonDataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

    {

    dataBase mydatabase = new dataBase("localhost", "theproject", "root");

    //TODO : Coder fonction SELECT

    bool connectionStatus = mydatabase.SelectArome("SELECT * FROM xdb_recetteComposant where id=Wink");/*+ recuperer l id de la recette de la frm1 pour afficher les composants*/

    kryptonDataGridView1.DataSource = mydatabase.myDataTable;

    kryptonDataGridView1.DataSource = mydatabase.myDataTable;

    kryptonDataGridView1.Refresh();

    }

    private void btnViewDetail_Click(object sender, EventArgs e)

    {

    frmViewDetailRecette _frmViewDetailRecette = new frmViewDetailRecette();

    _frmViewDetailRecette.IdRecette = (int)kryptonDataGridView1.CurrentRow.Cells["Id"].Value;

    _frmViewDetailRecette.InitializeData();

    _frmViewDetailRecette.Show();

    }

    }

    }

     

     

     

    frmViewDetailRecette

     

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Text;

    using System.Windows.Forms;

    using ComponentFactory.Krypton.Toolkit;

    namespace TheProject

    {

    public partial class frmViewDetailRecette : Form

    {

    private Int32 _idRecette;

    public Int32 IdRecette

    {

    get { return _idRecette; }

    set { _idRecette = value; }

    }

    private void frmViewDetailRecette_Load(object sender, EventArgs e)

    {

    }

    public void InitializeData()

    {

    //TODO : Coder fonction SELECT + COUNT

    dataBase mydatabase = new dataBase("localhost", "theproject", "root");

    bool connectionStatus = mydatabase.updateAll("SELECT * FROM xdb_recetteComposant WHERE recette=" + IdRecette.ToString() + "");

    kryptonDataGridView1.DataSource = mydatabase.myDataTable;

    kryptonDataGridView1.Columns["catName"].Visible = false;

    kryptonDataGridView1.Columns["category"].Visible = false;

    kryptonDataGridView1.Columns["price"].HeaderText = "Prix";

    kryptonDataGridView1.Columns["name"].HeaderText = "Nom";

    DataTable table = (DataTable)kryptonDataGridView1.DataSource;

    Int32 totalPrice = 0;

    foreach (DataRow row in table.Rows)

    {

    totalPrice += Int32.Parse(row["price"].ToString());

    }

    toolStripStatusLabel1.Text = totalPrice.ToString();

    }

    }

    }

     

     

     

    A savoir que les rows de la frmViewRecette sont sélectionner entièrement.

     

    A+

    lundi 28 avril 2008 10:03
  • Et hop une sieste digeste à coder. Essaye ça:

    public void InitializeData()

    Code Snippet

    {

    //TODO : Coder fonction SELECT + COUNT

    DataBase mydatabase = new DataBase("localhost", "theproject", "root");

    bool connectionStatus = mydatabase.updateAll("SELECT * FROM xdb_recetteComposant WHERE xdb_recette.id=" + IdRecette.ToString() + "");

    Console.WriteLine(mydatabase.myDataTable.Rows.Count.ToString());

    Console.WriteLine(kryptonDataGridView1.Name);

    kryptonDataGridView1.DataSource = mydatabase.myDataTable;

    kryptonDataGridView1.Columns["catName"].Visible = false;

    kryptonDataGridView1.Columns["category"].Visible = false;

    kryptonDataGridView1.Columns["name"].HeaderText = "Nom";

    kryptonDataGridView1.Columns["price"].HeaderText = "Prix";

    DataTable table = (DataTable)kryptonDataGridView1.DataSource;

    Int32 totalPrice = 0;

    foreach (DataRow row in table.Rows)

    {

    totalPrice += Int32.Parse(row["price"].ToString());

    }

    toolStripStatusLabel1.Text = totalPrice.ToString();

     

     

    }

     

     

    Et donne moi le résultat des console.writeline

     

    lundi 28 avril 2008 10:55
  • La référence d'objet n'est pas définie à une instance d'un objet.

     

    ligne:

    Console.WriteLine(mydatabase.myDataTable.Rows.Count.ToString());

     

     

    lol -_-

     

    Je pense que c'est les lignes plus haut qui sont mal instancié?

    lundi 28 avril 2008 11:01
  • non j'essayais de déterminer si c'était la datasource ou la datagridview qui posait problème. La réponse est la datasource donc maintenant on remonte d'un cran et tu rajoutes les lignes suivantes (à la place de ces 2 console.writeline que tu mets en commentaire (on sait jamais pour plus tard).

    Si le datatable retourné est vide c'est que le select s'est mal passé donc tu vas d'abord rajouter:

    Console.WriteLine("SELECT * FROM xdb_recetteComposant WHERE xdb_recette.id=" + IdRecette.ToString() + "");

    puis essaye d'exécuter la requête affcihée par la console

     

    Ensuite recopie le code du SelectALL ici et vérifie que les paramètres:"localhost", "theproject", "root" sont bien les bons

     

    Je te ferai mettre des console.writeline dans le selectALL ensuite pour voir à partir de quel moment le problème se pose (je soupconne que la connexion ne s'établi pas avec la base)
    lundi 28 avril 2008 12:36
  • Hello

     

    j'ai mis un messageBox car je ne vois pas ma console.

     

    La recette passe bien en id=2 qui est l'id du produit

     

    le code dataBase.cs:

    using System;

    using System.Collections.Generic;

    using System.Text;

    using System.Data;

    using System.Data.SqlClient;

    using System.IO;

    using MySQLDriverCS;

    namespace TheProject

    {

    class dataBase

    {

    private DataTable _dataTable;

    private MySQLConnection _dBConn;

    public DataTable myDataTable

    {

    get { return _dataTable; }

    set { _dataTable = value; }

    }

    private String _server;

    private String _login;

    private String _password;

    public dataBase()

    {

    }

    public dataBase(String server, String login, String password)

    {

    _server = server;

    _login = login;

    _password = password;

    }

    public bool SelectProduct(String request)

    {

    //Cr‚ation de la commande avec la connextion (attention ConnetDB doit avoir ‚t‚ appel‚!

    _dBConn = new MySQLConnection(new MySQLConnectionString(_server, _login, _password, "").AsString);

    MySQLCommand myCommand = new MySQLCommand(request, _dBConn);

    MySQLDataAdapter dadVideoCollection = new MySQLDataAdapter(myCommand);

    myDataTable = new DataTable("MonDataTable");

    dadVideoCollection.Fill(myDataTable);

    _dBConn.Open();

    _dBConn.Close();

    //DataColumn col = new DataColumn("Supprimer", System.Type.GetType("System.Boolean"));

    //col.DefaultValue = false;

    //myDataTable.Columns.Add(col);

    return true;

    }

    public bool SelectRecette(String request)

    {

    //Cr‚ation de la commande avec la connextion (attention ConnetDB doit avoir ‚t‚ appel‚!

    _dBConn = new MySQLConnection(new MySQLConnectionString(_server, _login, _password, "").AsString);

    MySQLCommand myCommand = new MySQLCommand(request, _dBConn);

    MySQLDataAdapter dadVideoCollection = new MySQLDataAdapter(myCommand);

    myDataTable = new DataTable("MonDataTable");

    dadVideoCollection.Fill(myDataTable);

    _dBConn.Open();

    _dBConn.Close();

    return true;

    }

    public bool SelectArome(String request)

    {

    //Cr‚ation de la commande avec la connextion (attention ConnetDB doit avoir ‚t‚ appel‚!

    _dBConn = new MySQLConnection(new MySQLConnectionString(_server, _login, _password, "").AsString);

    _dBConn.Open();

    MySQLCommand myCommand = new MySQLCommand(request, _dBConn);

    MySQLDataAdapter dadVideoCollection = new MySQLDataAdapter(myCommand);

    myDataTable = new DataTable("MonDataTable");

    dadVideoCollection.Fill(myDataTable);

    _dBConn.Close();

    return true;

    }

    public bool updateAll(string request)

    {

    _dBConn = new MySQLConnection(new MySQLConnectionString(_server, _login, _password, "").AsString);

    MySQLCommand myCommand = new MySQLCommand(request, _dBConn);

    myCommand.Connection.Open();

    myCommand.ExecuteNonQuery();

    _dBConn.Close();

    return true;

    }

    }

    }

     

     

    Le select fonctionne, il est utiliser ailleurs, de plus, j'utilise updateAll pour afficher les composants.

     

    il continu de buguer ici:

    kryptonDataGridView1.DataSource = mydatabase.myDataTable;

    lundi 28 avril 2008 12:48
  • ok facile:

     

    remplace mydatabase.updateALL par mydatabase.SelectRecette et ça marchera!

     

    note: le updateAll sert à faire un update (comme son nom l'indique ) et on ne remplit pas myDataTable d'où le fait qu'il ne soit pas définit après.

     

    En passant il va vraiment falloir qu'on nettoie ce code car SelectProduct,SelectRecette,SelectArome font exactement la même chose. Tu ferai mieux d'écrire une méthode Select qui fait le même code et c'est tout! (si tu as l'intention plus tard de faire des choses différentes dans ces 3 autres tu les gardes mais elle pourrait (pour l'instant) appeler toutes Select en interne comme ça un seul code c'est plus facile à maintenir et plus clair)

     

    lundi 28 avril 2008 13:15
  • J'ai mis un point d'arret:

     

    Voila que table est null:

      connectionStatus true bool

    -  table null System.Data.DataTable

     

    lundi 28 avril 2008 13:15
  • Ben tout dépend où tu as mis ton point d'arrêt. Datatable est toujours null jusqu'au retour d'un des select (et dans le cas d'un update il reste null).

    Hors ce point d'arret quel est le problème maintenant que tu appelles selectRecette ?

     

    lundi 28 avril 2008 13:23
  • Toujours le meme:

     

    La référence d'objet n'est pas définie à une instance d'un objet.

    ligne:

    kryptonDataGridView1.DataSource = mydatabase.myDataTable;

     

     

    code initializeData:

     

    public void InitializeData()

    {

    //TODO : Coder fonction SELECT + COUNT

    dataBase mydatabase = new dataBase("localhost", "theproject", "root");

    bool connectionStatus = mydatabase.SelectRecette("SELECT * FROM xdb_recetteComposant WHERE recette='" + IdRecette.ToString() + "';");

    kryptonDataGridView1.DataSource = mydatabase.myDataTable;

    kryptonDataGridView1.Columns["catName"].Visible = false;

    kryptonDataGridView1.Columns["category"].Visible = false;

    kryptonDataGridView1.Columns["name"].HeaderText = "Nom";

    kryptonDataGridView1.Columns["price"].HeaderText = "Prix";

    DataTable table = (DataTable)kryptonDataGridView1.DataSource;

    Int32 totalPrice = 0;

    foreach (DataRow row in table.Rows)

    {

    totalPrice += Int32.Parse(row["price"].ToString());

    }

    toolStripStatusLabel1.Text = totalPrice.ToString();

    }

     

     

    edit:

     

    j'ai essayé de placer la ligne

    DataTable table = (DataTable)kryptonDataGridView1.DataSource;

     

    avant

    kryptonDataGridView1.DataSource = mydatabase.myDataTable;

     

    et l'erreur est toujours la meme mais pour:

    DataTable table = (DataTable)kryptonDataGridView1.DataSource;

     

    :/

     

    Le client veut voir le logiciel mercredi matin 7h :/

    lundi 28 avril 2008 13:25
  • bon met selectArome à la place de selectRecette et regarde. Ca devrait marcher. Après regarde bien ton code et tu verras une différence. Je t'expliquerai après  (indice: regarde où se trouvent les open)

     

    Par contre je suis étonné car myDataTable devrait être initialisé (vide je te l'accord mais initialisé quand même où alors il y a un autre problème que je ne vois pas pour l'instant).

     

    lundi 28 avril 2008 13:53
  •  

    Si tu désepères on est foutu car on sera 2/2 ^^

     

    bool connectionStatus = mydatabase.SelectArome("SELECT * FROM xdb_recetteComposant WHERE recette='" + IdRecette.ToString() + "';");

    kryptonDataGridView1.DataSource = mydatabase.myDataTable;

     

    ->La référence d'objet n'est pas définie à une instance d'un objet.

    kryptonDataGridView1.DataSource = mydatabase.myDataTable;

     

     

    EDIT:

     

    si je fais:

    kryptonDataGridView1.Columns["catName"].Visible = false;

    kryptonDataGridView1.Columns["category"].Visible = false;

    kryptonDataGridView1.Columns["name"].HeaderText = "Nom";

    kryptonDataGridView1.Columns["price"].HeaderText = "Prix";

    kryptonDataGridView1.DataSource = mydatabase.myDataTable;

    DataTable table = (DataTable)kryptonDataGridView1.DataSource;

     

    il me donnje l instance sur :

    kryptonDataGridView1.Columns["catName"].Visible = false;

    lundi 28 avril 2008 13:54
  • heu désespéré non mais j'ai pas eut assez de café aujourd'hui alors je dors.

     

    J'ai pas beaucoup d'idée là.

     

    Au moment du "crash" peux tu regarder la fenêtre variables locales et me dire exactement ce qui se passe au niveau de mydatabase (normalement tu verras un + devant pour pouvoir consulter l'état de mydatatable et plein d'autres choses); Ce qui m'intéresse c'est de déterminer ce qui est à null pour l'instant.

     

     

     

    lundi 28 avril 2008 14:48
  • -  this {TheProject.frmViewDetailRecette, Text: } TheProject.frmViewDetailRecette

    +  base {TheProject.frmViewDetailRecette, Text: } System.Windows.Forms.Form {TheProject.frmViewDetailRecette}

      _idRecette 2 int
      components null System.ComponentModel.IContainer
      IdRecette 2 int
    +  kryptonDataGridView1 null ComponentFactory.Krypton.Toolkit.KryptonDataGridView
    +  kryptonManager null ComponentFactory.Krypton.Toolkit.KryptonManager

      kryptonPanel null ComponentFactory.Krypton.Toolkit.KryptonPanel
    +  statusStrip1 null System.Windows.Forms.StatusStrip
      toolStripStatusLabel1 null System.Windows.Forms.ToolStripStatusLabel
    +  mydatabase {TheProject.dataBase} TheProject.dataBase
      connectionStatus true bool
    +  table null System.Data.DataTable
      totalPrice 0 int

     

     

    Ecoutes, faut vraiment que sa fonctionne d'ici midi que jpuisse ensuite nettoyer le code. si sa fonctionne pas comme ca on fait autrement, pas forcément dans 1 gridview

     

    on pourrait tout récupéré et mettre dans des textBox en readonly = true? A la manière des edit enfait. non?

     

    mardi 29 avril 2008 06:43
  •  

    Ben le problème c'est qu'à priori les données ne remontent pas donc mettre une textbox ou un datagridview ne changera rien. La j'ai vraiment besoin de voir ce qui se passe car je ne comprends plus ce qui se passe.

     

    Bon télécharge sharedview:

    http://connect.microsoft.com/site/sitehome.aspx?SiteID=94

    Et ouvre une session on va essayer comme ça (à priori ça passe tout les parefeu et compagnie donc ça devrait marcher).

    dès que tu as ta session poste la ici comme ça je me connecterai (mon sharedview est ouvert en attente)

    A tout de suite.

    mardi 29 avril 2008 08:10
  • Edit scuse j ai pas tout capté au truc

     

    le new mdp c'est: CZ67U4$F

    session: gonightwish@hotmail.com

     

    Edit 2:

    Voila ce que l'on me dit sur un autre forum:

     

    "Une tite question, c'est normal que tu utilises IdRecette qui appelle donc _idRecette qui n'a pas été initialisée ? J'ai pas encore fait beaucoup de C# et dans mes souvenir c'est initialisé par défaut à 0, mais je ne suis pas sur, donc vérifie aussi que _idRecette contient une référence correcte."

    mardi 29 avril 2008 08:20
  • Quelques soucis avec le logiciel,

     

    le nouveau mot d epasse est:

    #33ULPD3

     

    Edit: Alt+F4 pas sur le bonne fenetre :]

     

    #38EKM3E

     

     

    mardi 29 avril 2008 11:16
  • Plop,

     

     

    Bon, le client était content malgrès les 60% qui fonctionnait seulement \o/. Merci à toi.

    Ceci dit, si tu acceptes encore de m'aider un peu, je réouvrirai des sessions

     

    mercredi 30 avril 2008 07:15
  • Oui pourquoi pas mais pas avant mardi prochain. La je suis sur une release avec une tonne de boulot et avec les ponts ça va pas être facile.

    En attendant je pourrai quand même répondre sur les forums.

    mercredi 30 avril 2008 08:24