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 :

Compter des valeurs identiques sur une colonne Gridview


Sujet :

C#

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut Compter des valeurs identiques sur une colonne Gridview
    Bonjour

    Je n'arrive pas à compter des valeurs identiques dans une colonne spécifique sur mon gridview.

    La colonne s'appelle ''presence'', il s'agit d'une checkbox sur un formulaire.

    Les valeurs retournées dans ma Database sont donc 'TRUE' ou 'FALSE' ( par défaut FALSE si la case n'est pas coché)


    J'affiche tout cela dans un Gridview avec des Boundfield avec un update et delete command.

    J'ai réussi également à afficher un compteur qui me compte le nombre de ligne total ( donc nombre de saisie du formulaire)

    Mais je bloque sur mon total de coche 'TRUE'

    Quelqu'un aurais une idée ?


    Comptage des lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lblCnt.Text = GridView1.Rows.Count.ToString();

    Un bout du Gridview
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <asp:BoundField ItemStyle-Width = "150px" DataField = "nom" HeaderText = "Nom">
    <ItemStyle Width="150px"></ItemStyle>
           </asp:BoundField>
        <asp:BoundField ItemStyle-Width = "150px" DataField = "presence" HeaderText = "Présence">
    <ItemStyle Width="150px"></ItemStyle>
           </asp:BoundField>

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Pourquoi ne pas compter en amont, directement sur la source de données ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    Je ne vois pas ce que tu veux dire, c'est mon premier projet en ASP...

  4. #4
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    Ton GridView est remplis avec une liste, compte plutôt sur la liste que sur le GridView, c'est ce que veut dire DotNetMatt par "en amont" sur la source.
    Il s'agit de la source qui alimente ton GridView
    " Je préfère comprendre les gens qui ne me comprennent pas "

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    Merci pour cette info , mais pouve vous me donner une piste pour commencer ?

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Poste la partie de ton code où tu définis la source de données, ainsi que la définition de cette source de données (la classe qui est utilisée).
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  7. #7
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    Voici mon code pour appeler la base dans le Gridview :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <asp:SqlDataSource ID="MarketingSqlServer" runat="server"
        SelectCommand="SELECT [id], [client], [societe], [nom], [prenom], [email], [telephone], [salon], [apero], [repas], [registration_date]  FROM [inscriptions]"
    	UpdateCommand="UPDATE [inscriptions] SET [client] = @client, [societe] = @societe, [nom] = @nom, [prenom] = @prenom, [email] = @email, [telephone] = @telephone, [salon] = @salon, [apero] = @apero, [repas] = @repas WHERE [id] = @id"
    	DeleteCommand="DELETE FROM [inscriptions] WHERE [id] = @Id"
        ConnectionString="<%$ ConnectionStrings:MarketingSqlServer %>">
    	</asp:SqlDataSource>

  8. #8
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    Salut,

    Il faut rajouter un évenement a ton SqlDatasource :

    Page asp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <asp:SqlDataSource ID="sqlDataId" runat="server" 
         OnSelected="SelectedDataSource"
         ... >
    </asp:SqlDataSource>
    Code behind :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected void SelectedDataSource(object sender, SqlDataSourceStatusEventArgs e)
    {
        lblCnt.Text = e.AffectedRows;
    }

  9. #9
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    J'ai tout intégrer et j'ai ce message d'erreur :

    "Message d'erreur du compilateur: CS0029: Impossible de convertir implicitement le type 'int' en 'string'"

  10. #10
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    Est ce que tu peux nous montrer la ligne qui pose problème ?

    Merci

  11. #11
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    J'avais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lblCnt.Text = e.AffectedRows;
    Je viens de le remplacer par cela et j'ai plus l'erreur , mais ca compte pas ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lblCnt.Text = e.AffectedRows.ToString();

  12. #12
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    c'est bon , j'ai mon total de ligne quio s'affiche avec le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lblCnt.Text = e.AffectedRows.ToString();
    !! Ne pas oublier d'enregistrer le .aspx

    Maintenant j'aimerais compter une colonne en particulier ('presence'), par exemple ne comptez que les valeurs 'TRUE'

    Merci

  13. #13
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    Je vais te montrer une solution que je n'approuve pas personnellement.
    Tu rajoute une deuxième SqlDataSource qui effectue la requête nécessaire et qui te renvoi le nombre de ligne concerné.

    Page asp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        <asp:Label ID="lblCount" runat="server"></asp:Label>
        <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1"></asp:GridView>
        <asp:SqlDataSource OnSelected="SqlDataSource1_Selected" ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:bibliotequeDb %>" SelectCommand="SELECT [Id], [Titre] FROM [BaseMedia]"></asp:SqlDataSource>
        <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:bibliotequeDb %>" SelectCommand="SELECT COUNT(*) AS Result FROM webpages_Membership WHERE (IsConfirmed = 'True')"></asp:SqlDataSource>
    Code behind :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            protected void SqlDataSource1_Selected(object sender, SqlDataSourceStatusEventArgs e)
            {
                var dv = (DataView)SqlDataSource2.Select(DataSourceSelectArguments.Empty);
                int total = (int)dv.Table.Rows[0][0];
                lblCount.Text = total.ToString();
            }

    SqlDataSource est simple à mettre en oeuvre pour aller très vite. Mais des que tu as des traitements a effectuer... Je ne pense pas que ça soit la meilleur solution...

    Pour faire ce que tu as besoin (en mode rapide sans couche):
    • Requete Bdd en code behind
    • Mapper le résultat de la requete à une "List<MonObjet>" (MonObjet est une représentation de la table en Bdd)
    • Bindé mon gridview avec la List<MonObjet>
    • Faire le comptage (Grace à Linq, c'est extrement simple)
    • Remplir le label avec le comptage

  14. #14
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Effectivement dans ce cas il ne faut plus utiliser de SqlDataSource et mettre un peu les mains dans le cambouis, ça économise l'exécution d'une requête et au moins tu es sûr de manipuler les données qui sont affichées.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  15. #15
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    Bonjour

    Je reviens ce mon sujet après un peu d'absence.

    Je n'ai pas du tout réussi à intégrer le comptage des memes valeurs, et je ne comprend pas pourquoi...

  16. #16
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Comment veux-tu obtenir de l'aide si tu ne postes ni code, ni aucune explication sur ce que tu as fait ? Nous ne sommes pas devins...
    Nom : 819639011.gif
Affichages : 273
Taille : 74,7 Ko
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  17. #17
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    Voici le code de la page avec le Gridview :

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="liste.aspx.cs" Inherits="CSharp" EnableEventValidation="false" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html>
    <head id="Head1" runat="server">
        <meta name="ProgId" content="SharePoint.WebPartPage.Document">
    	<meta name="WebPartPageExpansion" content="full">
    	<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
        <link href="styles.css" rel="stylesheet" type="text/css" />
        <title>Inscriptions Stammtisch 2014</title>
     
        <link href="styles.css" rel="stylesheet" type="text/css" />
     
        <style type="text/css">
    http://www.edox.com/stammtisch/view.aspx
     
            .auto-style1 {
                width: 240px;
                text-decoration: underline;
            }
     
            </style>
     
    </head>
    <body style="font-family: Verdana" bgcolor="#000000" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF">
        <div align="center">
    				<font color="#FFFFFF">
    				<font class="titre"><span class="auto-style1">
                    Liste des inscrits 
                2014<br />
                <br />
                    <br />
                    Total :
            <asp:Label ID="lblCnt" runat="server"></asp:Label>
     
          </span>
          	    </font></font>&nbsp;<form runat="server">
        <asp:Button ID="btnExportExcel" runat="server" Text="Export Excel" OnClick="btnExportExcel_Click" />
                        <br />
        <br /><br />	
        <div>
        <asp:GridView ID="GridView1" runat="server" DataSourceID="MarketingSqlServer"
     
        Font-Names = "Arial" 
        Font-Size = "11pt" 
        RowStyle-BackColor = "#C2D69B"
        AlternatingRowStyle-BackColor = "#a4c268"  
        HeaderStyle-BackColor = "#58bdf1"
        AllowSorting="true" 
        AllowPaging ="false"
        AutoGenerateEditButton="false"
        DataKeyNames="id"
        AutoGenerateColumns="False"
        EnableEventValidation="false"
        FooterStyle-BackColor="#58BDF1"
     
        >  
     
     
    <AlternatingRowStyle BackColor="#A4C268"></AlternatingRowStyle>
     
     
       <Columns>
        <asp:BoundField ItemStyle-Width = "100px" DataField = "client" HeaderText = "N° Client" >
    <ItemStyle Width="100px"></ItemStyle>
           </asp:BoundField>
        <asp:BoundField ItemStyle-Width = "150px" DataField = "societe" SortExpression="societe" HeaderText = "Société" >
    <ItemStyle Width="150px"></ItemStyle>
           </asp:BoundField>
        <asp:BoundField ItemStyle-Width = "150px" DataField = "nom" HeaderText = "Nom">
    <ItemStyle Width="150px"></ItemStyle>
           </asp:BoundField>
        <asp:BoundField ItemStyle-Width = "150px" DataField = "prenom" HeaderText = "Prénom">
    <ItemStyle Width="150px"></ItemStyle>
           </asp:BoundField>
        <asp:BoundField ItemStyle-Width = "150px" DataField = "email" HeaderText = "Email">
    <ItemStyle Width="150px"></ItemStyle>
           </asp:BoundField>
        <asp:BoundField ItemStyle-Width = "150px" DataField = "telephone" HeaderText = "Téléphone">
    <ItemStyle Width="150px"></ItemStyle>
           </asp:BoundField>
        <asp:BoundField ItemStyle-Width = "150px" DataField = "salon" HeaderText = "Salon">
    <ItemStyle Width="150px"></ItemStyle>
           </asp:BoundField>
        <asp:BoundField ItemStyle-Width = "150px" DataField = "apero" HeaderText = "Apéro">
    <ItemStyle Width="150px"></ItemStyle>
           </asp:BoundField>
        <asp:BoundField ItemStyle-Width = "150px" DataField = "repas" HeaderText = "Repas">
    <ItemStyle Width="150px"></ItemStyle>
           </asp:BoundField>
        <asp:BoundField ItemStyle-Width = "" DataField = "registration_date" HeaderText = "Date"/>
     
       </Columns> 
       </asp:GridView>
     
       <asp:SqlDataSource ID="MarketingSqlServer" runat="server"
        SelectCommand="SELECT [id], [client], [societe], [nom], [prenom], [email], [telephone], [salon], [apero], [repas], [registration_date]  FROM [inscriptions]"
    	ConnectionString="<%$ ConnectionStrings:MarketingSqlServer %>">
    	</asp:SqlDataSource>
       </div>
       <br />
     
       <br />
     
     
            &nbsp;
     
       </form>	
     
     
     
    </body>
    </html>
    J'ai un ligne par inscription et je souhaite comptez les valeurs identiques de la colonne [salon] comme ceci :

    Salon :
    TRUE : 10
    FALSE : 5

    Merci d'avance

    Et le comptage total des lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    protected void Page_Load(object sender, EventArgs e)
        {
    		lblCnt.Text = GridView1.Rows.Count.ToString();
        }

  18. #18
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Ok c'est le même code qu'au début As-tu lu avec attention les posts de cette discussion, et en particulier celui de katkiller ? La solution est dedans.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  19. #19
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    J'ai tenter la solution de katkiller mais rien ne compte et je n'ai pas de message d'erreur.

    Voici le code utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <asp:Label ID="SalonCount" runat="server"></asp:Label>
        <asp:SqlDataSource 
            OnSelected="SqlDataSource1_Selected" ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:MarketingSqlServer %>"
            SelectCommand="SELECT [salon] FROM [inscriptions]"></asp:SqlDataSource>
        <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
            ConnectionString="<%$ ConnectionStrings:MarketingSqlServer %>"
            SelectCommand="SELECT COUNT(*) AS Result FROM inscriptions WHERE (IsConfirmed = 'True')"></asp:SqlDataSource>

Discussions similaires

  1. [XL-2000] regrouper et compter les valeurs identiques d'une colonne excel
    Par noemieze dans le forum Excel
    Réponses: 2
    Dernier message: 24/04/2014, 12h24
  2. [XL-2010] Compter le nombre de valeurs identiques sur une feuille
    Par Yepazix dans le forum Excel
    Réponses: 5
    Dernier message: 10/07/2011, 00h26
  3. [MySQL] Compter le nombre de valeurs identiques dans une colonne d'une table
    Par luca120 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/12/2009, 00h40
  4. Liste des valeurs contenue dans une colonne
    Par TimDe dans le forum Excel
    Réponses: 5
    Dernier message: 15/08/2008, 17h11
  5. [JpGraph] Mettre des valeurs manuellement sur une échelle
    Par Xandrine dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 26/06/2008, 11h11

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