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

ASP.NET Discussion :

Colonne pour calcul dans une gridview


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Par défaut Colonne pour calcul dans une gridview
    Bonjour,
    J'ai une gridview en édit mode ayant comme colonne :
    code_etudiant----------nom_etudiant------matière1------matière2
    Les deux premières colonnes sont fixes et dans les deux dernières colonnes on insère les notes des matières 1et 2.
    Je cherche à ajouter une dernière colonnes qui calcule la moyenne du module .
    Comment faire ?Merci

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2010
    Messages : 292
    Par défaut
    J'ai quelque chose de similaire dans mon projet mais je n'utilise pas de colonne supplémentaire pour calculer le total.

    Sinon je te propose quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    double moyenne = 0;
    foreach (GridViewRow TaLigne in TaGridView.Rows)
    {
        moyenne = double.Parse(TaLigne.Cells[LeNuméroDeTaColonneMatière1].Text) + double.Parse(TaLigne.Cells[LeNuméroDeTaColonneMatière2].Text);
        moyenne = moyenne / 2;
        TaLigne.Cells[LeNuméroDeTonTotal].Text = moyenne.ToString();
    }
    Je pense que ça peut marcher, maintenant il existe peut-être un moyen plus facile.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Par défaut
    Merci Juju54350
    J'ai quelque chose de similaire dans mon projet mais je n'utilise pas de colonne supplémentaire pour calculer le total
    Tu fais comment?s'il ya mieux j'espère que tu me le dirais ,moi j'ai pensé faire comment cité dans mon message(je suis pas sure que c'est la bonne solution) mais les remarques et les suggestions sont les bienvenues surtout que je me plante la dessus ça fait un bail.
    maintenant il existe peut-être un moyen plus facile.
    Lequel?
    Merci .

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2010
    Messages : 292
    Par défaut
    Ah ça je ne sais pas, si ce n'est ce que j'ai mis dans mon projet : je n'utilise pas de colonne supplémentaire mais une variable de type double.

    Tu peux par exemple te servir de mon exemple au-dessus (tu vois bien que je n'ai pas créé de colonne pour la moyenne).

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Par défaut
    Salut Juju54350,
    D'accord je vais essayer ton exemple Juju54350 .
    Merci

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2010
    Messages : 86
    Par défaut
    Pourquoi tu ne rajoutes pas une colonne moyenne ? Comme ca, si tu veux un aperçu graphique et bien tu parcours lignes par lignes ton DataTable, tu récupère les valeurs de Moyenne 1 et Moyenne 2, une fois que tu les as, tu met la valeur de la moyenne dans un calcul et après tu ajoutes cette valeur a ta colonne Calcule.

    Pour cela tu fais DataTable.Rows(3).Value = <Variable de calcul>
    J'ai mis 3 car c'est ta 4ème colonne selon ton exemple (on commence a partir de 0) mais après cela tu le modifie selon ton vrai cas. N'ayant fourni aucun code de ton projet j'ai mis quelque chose de "théorique"

  7. #7
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2010
    Messages : 292
    Par défaut
    Citation Envoyé par Rhend Voir le message
    Pourquoi tu ne rajoutes pas une colonne moyenne ? Comme ca, si tu veux un aperçu graphique et bien tu parcours lignes par lignes ton DataTable, tu récupère les valeurs de Moyenne 1 et Moyenne 2, une fois que tu les as, tu met la valeur de la moyenne dans un calcul et après tu ajoutes cette valeur a ta colonne Calcule.
    Je pense que tu veux plutôt dire les valeurs de Matière1 et Matière2.

    Sinon oui il peut créer une colonne supplémentaire, ça dépend juste s'il veut que la moyenne soit visible ou juste calculée via une variable.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Par défaut
    Bonjour,
    Merci Juju54350, Rhend
    J'aimerais bien que la moyenne soit visible moi ce qui j'ai fait avant de poster ici c'est : j'insére les notes à l'aide d'une gridview en edit mode puis je clique sur un bouton pour m'afficher la gridview finale avec les moyennes et j'ai utilisé une requête sql qui est très longue :
    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
     
      private void BindData()
        {
            SqlConnection myConnection = new SqlConnection(ConnectionString);
    String strSQL = @"SELECT NUM_INSCRIPTION, NOM_PRENOM_ETUDIANT, CODE_TYPE_RELATION_MODULE, CODE_MODULE, [211] AS '211', [212] AS '212',
     
    round((([211]*(select COEFF from MATIERE WHERE CODE_MATIERE=211))+([212]*(select COEFF from MATIERE WHERE CODE_MATIERE=212)))/((select COEFF from MATIERE WHERE CODE_MATIERE=211)+(select COEFF from MATIERE WHERE CODE_MATIERE=212)
    ),2)AS moy1,
    CASE WHEN ((([211]*(select COEFF from MATIERE WHERE CODE_MATIERE=211))+([212]*(select COEFF from MATIERE WHERE CODE_MATIERE=212))+)/((select COEFF from MATIERE WHERE CODE_MATIERE=211)+(select COEFF from MATIERE WHERE CODE_MATIERE=212))>='10' and [211]>='5' and [212]>='5'
    and [212]>='5' )then '2'
    WHEN ((([211]*(select COEFF from MATIERE WHERE CODE_MATIERE=211))+([212]*(select COEFF from MATIERE WHERE CODE_MATIERE=212)))/((select COEFF from MATIERE WHERE CODE_MATIERE=211)+(select COEFF from MATIERE WHERE CODE_MATIERE=212)
    )>='5' and [211]>='5' and [212]>='5'
    and [212]>='5') then '5' else '3'  END AS valid1
       FROM         (SELECT     EXAMEN.CODE_MATIERE, EXAMEN.NUM_INSCRIPTION, EXAMEN.NOTE, ETUDIANT.NOM_PRENOM_ETUDIANT, 
                                                  CAPITALISE_MODULE.CODE_TYPE_RELATION_MODULE, CAPITALISE_MODULE.CODE_MODULE
                           FROM          EXAMEN INNER JOIN
                                                  ETUDIANT ON ETUDIANT.NUM_INSCRIPTION = EXAMEN.NUM_INSCRIPTION INNER JOIN
                                                  CAPITALISE_MODULE ON CAPITALISE_MODULE.NUM_INSCRIPTION = EXAMEN.NUM_INSCRIPTION
                           WHERE        CODE_TYPE_RELATION_MODULE = 1 AND CODE_MODULE = 21) p PIVOT(SUM(NOTE)FOR CODE_MATIERE IN( [211], [212])) AS pvt ORDER BY NUM_INSCRIPTION ";
      SqlDataAdapter ad = new SqlDataAdapter(strSQL, myConnection);
            DataSet ds = new DataSet();
            ad.Fill(ds);
            GridView1.DataSource = ds;
     
            GridView1.DataBind();
     
     
     
        }
    ,c'est pour cela que je cherche une autre solution .pour la solution d'une nouvelle colonne le calcul de la moyenne s'affiche au fur et à mesure que l'utilisateur insère les notes ou après avoir les insérer toutes?
    Merci

  9. #9
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2010
    Messages : 292
    Par défaut
    Donc sur ton site, t'as ta GridView dans laquelle tu peux saisir les notes, ensuite tu cliques sur un bouton qui te réaffiche la même GridView avec les données saisies et en plus la moyenne calculée (donc une colonne supplémentaire qui est ajoutée) ?

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Par défaut
    Salut,
    Exacte ,c'est ce que j'ai fait mais je cherche mieux. est ce possible de faire ça par une seule grid sans qu'elle se réaffiche? Si j'utilise DataTable.Rows(3).Value = <Variable de calcul> chose qui me réduit un peu la requête c'est bien ,mais ou mettre ce code?
    Merci

  11. #11
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2010
    Messages : 292
    Par défaut
    Je ne vois pas trop pour sauvegarder les données saisies dans un GridView, tu peux surement le faire, regarde dans les événements de ta GridView (genre après que t'aie rempli une ligne, ça te met à jour automatiquement).

    Et t'as combien de colonnes dans ta GridView ? Parce qu'au pire, dès que t'as saisi la dernière note, bah ça peut te calculer directement la moyenne de la ligne en cours.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Par défaut
    j'ai des gridview de centaines de lignes (entre 600 et 1000).

  13. #13
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2010
    Messages : 292
    Par défaut
    Je te demandais le nombre de colonnes, pas de lignes
    Mais tu dois saisir combien de notes au final, enfin combien d'élèves ?

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Par défaut
    salut,
    Je suis perturbée j'ai 4 colonnes (num_inscription,nom_prenom,note1,note2)et moyenne sa vafaire 5colonnes .
    Merci Juju54350

  15. #15
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2010
    Messages : 292
    Par défaut
    Bah tu crées donc une cinquième colonne après avoir "GridView1.DataBind()". Je pense qu'on peut le faire, j'ai jamais essayé pour ma part. Et dès que tu passes à la prochaine ligne, fais en sorte de calculer la moyenne et de l'afficher dans la dernière colonne de la ligne précédente.

    C'est tout ce que je peux te dire.

  16. #16
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2010
    Messages : 86
    Par défaut
    Voila comment je vois les choses :

    Tu crées dans ton DataGridView tes colonnes

    Code Etudiant (Colonne 0) Nom Etudiant (Colonne 1) Matière 1 (Colonne 2) Matière 2 (Colonne 3) Moyenne (Colonne 4)

    Après tu crées une requete SQL qui ira remplir un DataTable du genre :

    SELECT <Tes champs> FROM <tes Tables> WHERE <tes clauses>

    Cette requêtes doit te retourner tout les étudiants avec leur notes par matières.

    Après tu lie ton DataTable a ton GridView via Gridview.DataSource = DataTable
    Après tu bind ton GridView : Gridview.Bind()

    Puis après tu crées un bouton nommé genre : Calcule Moyenne et sur son évènement _OnClick() tu fais ca :

    Tu utilises le bout de code de Juju pour faire la moyenne de toutes les matières par étudiants et tu utilises mon bout de code pour l'ajouter dans la colonne Moyenne et tu rebind ton gridview.

    Y'aura surement de l'affinage à faire car je suis pas un expert contrairement a d'autre parcourant ce forum, mais ca devrait le faire

  17. #17
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juillet 2010
    Messages : 292
    Par défaut
    Oui là je pense que ça doit être moins compliqué pour toi : tu saisis toutes tes notes, ensuite un clic sur le bouton et toutes les moyennes seront calculées et affichées dans ladite colonne.

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Par défaut
    Merci Juju54350 ,merci Rhend ,
    Je pense avoir compris merci encore

  19. #19
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2010
    Messages : 86
    Par défaut
    Si tu as d'autre question dit le, pour une fois que je peux aider quelqu'un

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Octobre 2008
    Messages : 187
    Par défaut
    Bonjour,
    Le code me renvoie une erreur :
    Le format de la chaîne d'entrée est incorrect.
    à cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    average = double.Parse(MRow.Cells[2].Text) + double.Parse(MRow.Cells[3].Text);
    merci de m'aider .

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 9
    Dernier message: 26/11/2014, 20h51
  2. Calcul dans une colonne a partir des donnees du gridview
    Par Mougain's dans le forum Développement Web avec .NET
    Réponses: 0
    Dernier message: 25/11/2014, 11h53
  3. calcul dans une gridview ?
    Par naturel dans le forum ASP.NET
    Réponses: 4
    Dernier message: 14/05/2008, 13h24
  4. colonne de calcul dans une requête
    Par Virgile59 dans le forum Access
    Réponses: 2
    Dernier message: 27/10/2006, 15h55
  5. Icon pour pour JButton dans une Jtable + pb colonnes
    Par dim_italia dans le forum Composants
    Réponses: 3
    Dernier message: 22/02/2006, 19h05

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