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 :

nombre total de lignes dans un gridview, datasource ?


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 501
    Par défaut nombre total de lignes dans un gridview, datasource ?
    bonjour

    J'aimerais afficher le nombre de lignes affichees sur le nombre total qu'il y a dans le gridview retourne par le datasource...

    J'ai trouve comment afficher le nombre de lignes affiches :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maGridView.rows.Count.toString()
    mais comment savoir combien il y en a en tout ? et pas que celles qui sont affichees sur la premiere page.
    j'ai essaye differentes choses mais sans succes.

    Merci
    ++

  2. #2
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Bonjour,

    Je t'invite à consulter la documentation MSDN sur la méthode SelectCount pour les DataSource : http://msdn.microsoft.com/fr-fr/libr...untmethod.aspx

    De même tu devrais consulter des tutoriels sur la pagination en général au sein d'une GridView (un exemple parmi d'autres : http://www.codedigest.com/Articles/A...ASPNet_20.aspx).

    En espérant t'avoir aidé

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 501
    Par défaut
    J'ai regarde ces liens mais honnetement ca reste flou
    Pour moi, ce que j'ai compris, c'est que la methode SelectCountMethod permet de récupérer un nombre de lignes. Mais ca dit pas que ca compte le nombre de ligne. Du coup je ne vois pas comment l'utiliser pour compter le nombre de lignes rapportees par mon ObjectDataSource et l'afficher.

    J'ai un ObjectDataSource du genre qui selectionne suivant des parametres...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <asp:ObjectDataSource runat="server"
        ID="ODS"
        TypeName="BLL.CManager" 
        SelectMethod="GetWithParameters" 
        OldValuesParameterFormatString="original_{0}"
        >
     
        <SelectParameters>
            <asp:ControlParameter ControlID="OriginalDateTextBox" Name="paramOriginalDate" PropertyName="Text" Type="DateTime" DefaultValue="" ConvertEmptyStringToNull="true" />
        </SelectParameters>
     
    </asp:ObjectDataSource>
    Merci
    a+

  4. #4
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Bonjour,

    Avec l'ObjectDataSource et la pagination, il te faut 2 méthodes : la SelectMethod qui te renverra X lignes de la page en cours de visualisation ( si tu as réglé sur 20 lignes l'affichage d'une page de la GridView et que tu es sur la premiere page, alors ta requête doit te renvoyer les 20 premiers résultats). Ensuite la SelectCountMethod qui elle te renvoit le count total de lignes correspondant à ta requête.

    En espérant t'avoir aidé.

  5. #5
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 501
    Par défaut
    J'ai deja defini la SelectMethod (mais pour moi cette methode renvoie pas X lignes vu que c'est ma requete globale, elle renvoit tout non?)

    Du coup dans le SelectCountMethod, je vois exactement la meme requete sauf que je mettrai un count(*) a la place des champs rapatries...

    J'ai essaye mais comment utiliser le SelectCountMethod... ? Est-ce une methode, une propriete ? Comment recupere la valeur finalement ? Je n'ai pas ete en mesure de recupere ce fameux chiffres de nombres de lignes totales!!

  6. #6
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Bonjour,

    Si tu relis mon message, tu verras que tu n'as pas bien saisi le concept. SI tu utilises la pagination => SelectCountMethod te renvoie le count TOTAL (pour savoir combien il y a de pages) et SelectMethod te renvoie UNIQUEMENT les lignes de la page en cours de visualisation.
    La pagination te permet justement de ne pas avoir à renvoyer toutes les lignes mais uniquement celles qui nous intéresse.

    Un petit exemple simple est disponible sur MSDN, et ce ne sont pas les exemples qui manquent sur le web (il y a un bon tuto sur le site asp.net)

    En espérant t'avoir aidé.

  7. #7
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 501
    Par défaut
    Bonjour,

    Vraiment desole mais j'arrive pas a voir comment debloquer mon probleme malgre les exemples.
    Je me demande si on se comprend en fait. lol

    J'ai deja la pagination, et je n'ai pas specifie de methodes speciales pour compter le nombre totale d'enregistrements et tout se passe bien quand meme... donc je me dis .NET doit deja compter pour savoir combien de nombres de pages afficher dans le footer du gridview non ?

    L'exemple sur MSDN, d'apres ce aue je comprends, permet juste de changer le nombre de lignes par pages du GridView via une DropDownListe..
    A aucun moment on affiche le nombre total d'enregistrements.

    Alors d'accord, le count dans cet exemple doit etre utilise pour compter le nombre de pages si j'ai bien compris mais mon code sans avoir defini cette methode fonctionne egalement, j'ai bien la pagination.

    Je ne sais pas si vous voyez ce que je veux dire ?

  8. #8
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Bonjour,

    Je t'invite à consulter un tuto qui t'explique de A à Z ce qu'est une DataSource, de même que la pagination dans une GridView, etc...

    Comme indiqué plus haut, il y a tout ce qu'il faut sur le site officiel ASP.NET.

    L'exemple sur MSDN montre certes comment changer en live le nombre de ligne affichée par page, mais il te montre aussi l'utilité et la différence entre la SelectCountMethod et la SelectMethod.

    Bref, entre ce que je t'ai indiqué et le lien donné, tu as largement de quoi comprendre ou t'inspirer pour ton site, après je ne vais pas rentrer dans le détails, sorry

  9. #9
    Membre émérite Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 717
    Par défaut
    Bonjour,

    un petit déterrage de post car je pense que Nicolas, tu n'as pas compris le besoin (qui se trouve être le mien )

    GridView avec AlloPaging définis à true avec SelectMethod et SelectCountMethod définis, la dessus pas de soucis.

    Sauf que je définis mon propre pager dans lequel je veux afficher :
    "Showing {0}-{1} of {2}"

    Pour ca, il me faut le premier index, la taille de la page, la dessus pas de soucis, mais maintenant il me faut le nombre d'éléments total se trouvant en BDD et c'est là que ca bloque.
    Cette valeur est retournée par la fonction SelectCount, mais comment récupère-t-on cette valeur dans l'override de RowCreated de la 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
    public class MyGridView : GridView
    {
    ....
    
    protected override void OnRowCreated(GridViewRowEventArgs e)
            {
                 if (e.Row.RowType == DataControlRowType.Pager)
                {
                   .....
                         if (base.DataSource is IListSource)
                        {
                            IListSource itotal = (IListSource)base.DataSource;
                            iTotalRec = itotal.GetList().Count;
                        }
                        else if (base.DataSource is ICollection)
                        {
                            ICollection itotal = (ICollection)base.DataSource;
                            iTotalRec = itotal.Count;
                        }
                        else if (!String.IsNullOrEmpty(base.DataSourceID))
                        {
                            iTotalRec = ?????????????
                        }
              }
    ....
    }
    Voila donc le probleme, comment récupérer dans cette valeur du selectCount.

    Si quelqu'un a une idée, une solution , je vous en remercie d'avance.

  10. #10
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    bizet, as-tu résolu ton problème ?
    je rencontre la même difficulté

  11. #11
    Membre émérite Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 717
    Par défaut
    Salut JBrasselet.

    Désolé, je n'ai pas trouvé de solutions pour le moment.

    J'avais commencé à réfléchir et peut etre trouver une solution mais je n'ai pas eu le temps de la mettre en place et de la tester.

    Je pensais dans le code behind faire appel a la fonction count et passer le résultat soit par session soit par parametre.

    Si tu trouves une solution je suis preneur.

  12. #12
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    J'ai trouvé un moyen de le faire même si ce n'est peut être pas le plus sexy

    J'ai écris ma méthode count de mon ObjectDataSource ainsi :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    [DataObjectMethodAttribute(DataObjectMethodType.Select)]
    public int CountApplications(int rowIndex, int pageSize, string sortStmt, string whereStmt)
    {
       MonServiceDTOFactory svc = new MonServiceDTOFactory();
       int result = svc.CompterApplications(rowIndex, pageSize, sortStmt, whereStmt);
       HttpRuntime.Cache.Add("TotalApplicationsCount", result, null, DateTime.Now.AddMinutes(5), Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
     
       return result;
    }

    Puis dans le code cs de ma page aspx j'ai, dans le dataBound de mon gridView :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (HttpRuntime.Cache["TotalApplicationsCount"] != null)
    {
       totalItem.Text = HttpRuntime.Cache["TotalApplicationsCount"].ToString();
    }
    et ça s'affiche bien

  13. #13
    Nouveau candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 3
    Par défaut
    Bonjour,

    Il faut attacher un évènement à ton datasource dans le code behind.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maGridView.Selected += this.maGridView_Selected;
    Le gestionnaire d'évènement (avec le bon EventArgs, ici j'ai utilisé un EntityDatasource) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void maGridView_Selected(object sender, EntityDataSourceSelectedEventArgs e)
    {
            int recordCount = e.TotalRowCount;
    }

  14. #14
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    Dans le cas d'un pager, cela donne-t-il le nombre de lignes de la page ou le nombre total de lignes qui existent sans pager ?

  15. #15
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 128
    Par défaut
    bonjour tt le monde

    moi pour résoudre ce probleme (si j'ai bien compris), j'ai utilisé une Classes LinQ to sql.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     Dim t As Integer
            Dim dc As New DataClassesDataContext
            Dim q = From col In dc.MaTable Where col.ref
            t = q.Count

  16. #16
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    La question est surtout de savoir comment tu l'affiches avec l'utilisation d'un ObjectDataSource en utilisant le résultat de la méthode SelectCount (si c'est possible)

  17. #17
    Nouveau candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 3
    Par défaut
    e.TotalRowCount donne le nombre total de lignes retournées par la requête SELECT de l'object Datasource.

    Extrait de MSDN:
    La propriété TotalRowCountde l'objet EntityDataSourceSelectedEventArgs affiche le nombre total d'objets de toutes les pages, indépendamment des valeurs passées par le contrôle lié aux données pour la pagination. TotalRowCountest uniquement récupéré si le contrôle lié aux données le nécessite, notamment si la pagination est activée.
    http://msdn.microsoft.com/fr-fr/libr....selected.aspx

    En espérant que ca réponde à ta question

Discussions similaires

  1. compter nombre de ligne dans un gridview
    Par mapmip dans le forum ASP.NET
    Réponses: 4
    Dernier message: 07/07/2009, 11h04
  2. Nombre total d'enregistrement dans un Form
    Par pleasewait dans le forum Access
    Réponses: 2
    Dernier message: 28/12/2006, 16h53
  3. Réponses: 1
    Dernier message: 11/12/2006, 12h45
  4. Réponses: 7
    Dernier message: 13/11/2006, 12h12
  5. Réponses: 1
    Dernier message: 08/09/2006, 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