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 :

Compter les records d'un dataset avec une méthode paginée


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 158
    Par défaut Compter les records d'un dataset avec une méthode paginée
    Bonjour,

    J'ai créé un affichage qui retourne les résultat d'une requête dans une table avec un Repeater auquel j'ai ajouté une méthode paginée grâce a un script que j'ai trouvé, étant nouveau en ASP.NET. Maintenant je voudrais afficher le nombre total de records quelque part, mais c'est le nombre de record de la page (20 au total) qui est affiché et pas le nombre de record de la requête. Quelqu'un sait comment je peux arranger cela?

    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
     
    using System;
    using System.Data;
    using System.Collections;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
     
    public partial class repeater : System.Web.UI.Page
    {
        public int PageNumber
        {
            get
            {
                if (ViewState["PageNumber"] != null)
                    return Convert.ToInt32(ViewState["PageNumber"]);
                else
                    return 0;
            }
            set
            {
                ViewState["PageNumber"] = value;
            }
        }
     
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            rptPages.ItemCommand +=
            new RepeaterCommandEventHandler(rptPages_ItemCommand);
        }
     
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
                LoadData();
        }
     
        private void LoadData()
        {
            SqlConnection cn = new SqlConnection("Ma connexion");
            cn.Open();
            SqlDataAdapter da = new SqlDataAdapter("Ma rquête", cn);
            DataTable dt = new DataTable();
            da.Fill(dt);
            cn.Close();
     
            PagedDataSource pgitems = new PagedDataSource();
            DataView dv = new DataView(dt);
            pgitems.DataSource = dv;
     
            pgitems.AllowPaging = true;
            pgitems.PageSize = 20;
            pgitems.CurrentPageIndex = PageNumber;
     
            if (pgitems.PageCount > 1)
            {
                rptPages.Visible = true;
                ArrayList pages = new ArrayList();
                for (int i = 0; i < pgitems.PageCount; i++)
                    pages.Add((i + 1).ToString());
                rptPages.DataSource = pages;
                rptPages.DataBind();
     
            }
            else
                rptPages.Visible = false;
     
            rptItems.DataSource = pgitems;
            rptItems.DataBind();
     
            //Compter le nombre de records
            int CntRow = pgitems.Count;
            string sCntRow = CntRow.ToString();
            lblCntRow.Text = sCntRow;
        }
     
        void rptPages_ItemCommand(object source,
        RepeaterCommandEventArgs e)
        {
            PageNumber = Convert.ToInt32(e.CommandArgument) - 1;
            LoadData();
        }
    }

  2. #2
    Invité
    Invité(e)
    Par défaut
    Normal, à la place de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //Compter le nombre de records
    int CntRow = pgitems.Count;
    string sCntRow = CntRow.ToString();
    lblCntRow.Text = sCntRow;
    tu dois faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int CntRow = dv.Table.Rows.Count;
    lblCntRow.Text = CntRow.ToString();

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 158
    Par défaut
    Merci gcorbineau. J'y étais presque mais je n'avais pas encore trouvé.

    Autre besoin si quelqu'un a encore un peu de temps à m'accorder... le script pour la méthode paginée que j'ai trouvé donne x liens vers le nombre de page, je voudrais que seulement 10 liens vers les pages s'affichent à la fois (avec les liens à gauche et à droite pour avancer ou reculer dans les pages (comme sur un datagridview)... Est-ce compliqué à mettre en place avec le code déjà existant ici?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Dans le bout de code qui te permet de générer tes liens, il suffit que tu prennes les n premiers et les n dernier

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 158
    Par défaut
    J'ai ajouté une condition dans la boucle for :

    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
     
    if (pgitems.PageCount > 1)
            {
                rptPages.Visible = true;
                ArrayList pages = new ArrayList();
                for (int i = 0; i < pgitems.PageCount; i++)
                    if (i != pgitems.CurrentPageIndex && i < pgitems.CurrentPageIndex + 5 && i > pgitems.CurrentPageIndex - 5)
                    {
                        pages.Add((i + 1).ToString());
                    }
                rptPages.DataSource = pages;
                rptPages.DataBind();
     
            }
            else
                rptPages.Visible = false;
    Si on est sur la page 1, l'affichage est le suivant :
    2 3 4 5

    Si on est sur la page 5 :
    1 2 3 4 6 7 8 9

    Si on est sur la page 17 :
    13 14 15 16

    - J'ai supprimé le lien de la page courante car je voudrais qu'on ne puisse pas cliquer sur celui-ci, mais qu'il s'affiche quand même (sans le lien), comment faire?

    - Comment faire en sorte qu'il y ait toujours 10 liens, qu'on soit au début ou la fin de la pagination?

    -Il y a 9 choix qui s'affichent et non 10.

    - Enfin je ne voit pas encore comment faire un bouton de page suivante et précédente.

    Merci d'avance à ceux qui prendront le temps de m'aider.

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/08/2011, 04h24
  2. Réponses: 11
    Dernier message: 15/11/2006, 16h52
  3. Compter les occurences d'un car dans une chaine/variable
    Par sherlockfr dans le forum Windows
    Réponses: 2
    Dernier message: 10/11/2005, 07h48
  4. [VB.NET] Alimenter un dataset avec une chaine XML...
    Par David.V dans le forum ASP.NET
    Réponses: 3
    Dernier message: 25/05/2004, 09h09
  5. [C#] Compter les lignes d'un DataSet
    Par alexischmit dans le forum ASP.NET
    Réponses: 13
    Dernier message: 26/04/2004, 15h17

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