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 :

GridView, gestion de la pagination et sqlDataSource dans le code behind


Sujet :

ASP.NET

  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 32
    Par défaut GridView, gestion de la pagination et sqlDataSource dans le code behind
    Bonjour à tous,

    Voila, j'ai un gridView qui s'affiche bien lorsque j'utilise sqlConnection et un dataSet dans le code behind, cependant, je rencontre des problème de pagination (ça n'est plus géré automatiquement évidement).

    Comment je dois faire pour gérer la pagination du coup?
    J'ai trouvé une discussion sur ce forum qui parlait du même problème que moi, mais ça n'a pas résolu le mien.

    J'ai essayer de passer par sqlDataSource dans le code behind, plutot que par sqlConnection, mais là, le gridView ne s'affiche pas...

    Je vous donne mon code C# :
    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
        public void afficheGridView()
        {
            //string requete;
            string message = "Problème lors de la connexion";
            GridView monGridView = new GridView();
            SqlDataSource gvSalarie = new SqlDataSource();
            gvSalarie.ConnectionString = "Data Source=STQY-589\\SQLEXPRESS; Initial Catalog=DossierIndividuel;Integrated Security=True";
            gvSalarie.SelectCommand = "SELECT nomSociete, libellePere, nomGroupeAgence, nomAgence,  intituleCategorie, TABLEAU.matricule, nomPrenomSalarie, typeDocument " +
                                          "FROM TABLEAU, SALARIE " +
                                          "WHERE SALARIE.matriculeRh = '7R777' " +
                                          "AND SALARIE.matricule = TABLEAU.matricule";
            //SqlConnection connexion = new SqlConnection("Data Source=STQY-589\\SQLEXPRESS; Initial Catalog=DossierIndividuel;Integrated Security=True");
            try
            {
                /*if (connexion.State == ConnectionState.Closed)
                {
                    connexion.Open();
                }
                requete = "SELECT nomSociete, libellePere, nomGroupeAgence, nomAgence,  intituleCategorie, TABLEAU.matricule, nomPrenomSalarie, typeDocument " +
                          "FROM TABLEAU, SALARIE " +
                          "WHERE SALARIE.matriculeRh = '7R777' " +
                          "AND SALARIE.matricule = TABLEAU.matricule";
                // Exécution de la requête et affichage du GridView
                SqlCommand commande = new SqlCommand(requete, connexion);
                SqlDataAdapter sqlDA = new SqlDataAdapter(commande);
                DataSet ds = new DataSet();
                sqlDA.Fill(ds);
                gvSalarie.DataSource = ds;
                gvSalarie.DataBind();
                EnableViewState = true;
                commande.Dispose();
                connexion.Close()*/
                monGridView.DataSource = gvSalarie;
                monGridView.DataBind();
            }
            catch (Exception ex)
            {
                Outil.Message(message, this);
                //Console.WriteLine(ex);
            }
        }
    Code asp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            <asp:GridView ID="gvSalarie" runat="server" AllowPaging="True" AllowSorting="True"
                DataKeyNames="matricule,typeDocument" OnPageIndexChanging="gvSalarie_PageIndexChanging" 
                AutoGenerateColumns="False" 
                SkinID="tableMaitre"
                OnDataBound="gvSalarie_DataBound" 
                OnRowDataBound="gvSalarie_RowDataBound"
                OnSorting="gvSalarie_Sorting" Width="95%">
    J'ai l'impression que je suis entrain de me perdre entre ce qui doit aller dans le code C# et dans le graphique!

  2. #2
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    Bonjour,

    en prenant en compte que ton GridView est "gvSalarie", et vu ton premier code qui semble marche bien :

    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
    public void afficheGridView()
        {
            //string requete;
            string message = "Problème lors de la connexion";
            GridView monGridView = new GridView();
     
            SqlConnection connexion = new SqlConnection("Data Source=STQY-589\\SQLEXPRESS; Initial Catalog=DossierIndividuel;Integrated Security=True");
            try
            {
                if (connexion.State == ConnectionState.Closed)
                {
                    connexion.Open();
                }
                requete = "SELECT nomSociete, libellePere, nomGroupeAgence, nomAgence,  intituleCategorie, TABLEAU.matricule, nomPrenomSalarie, typeDocument " +
                          "FROM TABLEAU, SALARIE " +
                          "WHERE SALARIE.matriculeRh = '7R777' " +
                          "AND SALARIE.matricule = TABLEAU.matricule";
                // Exécution de la requête et affichage du GridView
                SqlCommand commande = new SqlCommand(requete, connexion);
                SqlDataAdapter sqlDA = new SqlDataAdapter(commande);
                DataSet ds = new DataSet();
                sqlDA.Fill(ds);
                gvSalarie.DataSource = ds;
                gvSalarie.DataBind();
                EnableViewState = true;
                commande.Dispose();
                connexion.Close();
            }
            catch (Exception ex)
            {
                Outil.Message(message, this);
                //Console.WriteLine(ex);
            }
        }

    Tu peux mettre ta methode afficheGridView, d'abord dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (!IsPostBack)
            {
                afficheGridView();
            }
    et ensuite dans l'évenement PageIndexChanging de ton GridView :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     protected void gvSalarie_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvSalarie.PageIndex = e.NewPageIndex;
            afficheGridView();
        }

    normalement comme ça et avec ce qu'il y a dans ta page aspx, ça doit parfaitement marché

  3. #3
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 32
    Par défaut
    ahhh mon petit Redouane!!! ^^

    Voui, effectivement j'y avais pensé... Et je lavais fait aussi ^^
    Mais voila (le hic!) c'est que ma fonction afficheGridView() est celle du chargement de la page (donc elle est effectivement dans le load ^^) et d'une ré-initialisation de celle-ci (un bouton).

    Si je fait une recherche spécifique, c'est une fonction recherche() qui se déclenche... donc du coup la pagination après... :s

    Pourquoi faire simple quand on peut faire compliqué? lol

  4. #4
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    Oui je vois, il faut que je fasse un exemple comme le tien, mais je dois sortir mnt
    si le problème persiste chez toi, je vais le voir ce soir.
    En attendant une réponse, essaye d'appeler dans l'évenement PageIndexChanging de ton GridView, la méthode "recherche()" au lieu de "afficheGridView()" pour garder les mêmes critères de recherche que t'a fait.
    J'espère que t'aura une réponse plus optimisée et claire de ton anomalie

  5. #5
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    salut,

    en fait, j'avais un exemple comme le tien qui consiste à afficher des données selon certains critères de recherche, donc lors du click d'un bouton (recherche par exemple) il se connecte à la base et fait le mapping 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
    protected void btnSearch_Click(object sender, EventArgs e)
        {
            // comme ta méthode de recherche()
            BindGrid();
        }
     
        private void BindGrid()
        {
            // Traitement connexion base données et récupération des informations
    ...............................
    ...............................
            // suivant les critères de recherche
            GridView1.DataBind();
        }
    coté aspx, c'etais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" OnPageIndexChanging="GridView1_PageIndexChanging">
    .....................

    et pour l'evenement PageIndexChanging, j'avais fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            int CurrentIndex = e.NewPageIndex;
     
            if (e.NewPageIndex < 0 || e.NewPageIndex >= GridView1.PageCount)
                CurrentIndex = 0;
     
            GridView1.PageIndex = CurrentIndex;
            BindGrid();   // recherche() dans ton cas
        }
    je ne vois pas vraiement ce qui cloche dans ton code, si ça marche pas, peut tu nous donner le code de recherche, et exactement l'anomalie généré dans ton code.

    j'espère que ça vas t'aider

  6. #6
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Normalement, la pagination est gérée par le gridview, tu n'a pas à ecrire de code supplémentaire.

    Tu as ton gridview, ton sqldatasource, en propriété du gridview allowpaging="true", pagesize ="10" et dans ce cas tu auras 10 résultats par page de gridview.

    Je ne comprends pas trop le souci?

  7. #7
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 32
    Par défaut
    J'ai testé ton truc Redouane, ça ne fonctionne pas dans mon cas

    En fait, à l'initialisation de ma page ou dans le bouton ré-initialisation, c'est ma fonction afficheGridView() qui est appelé. Cette fonction affiche absolument toutes mes données.

    La fonction recherche(), elle, n'affiche que les critères de recherche. Si aucun de mes critères correspond à une recherche, bah rien n'est affiché...

    Donc bah vu que c'est le même gridview qui est à disposition pour chacune des deux méthodes, je ne sais pas comment lui dire que si je suis en mode recherche il pagine sur la recherche, et si je suis en mode "j'affiche toute mes données" bah il pagine sur la totalité des données...

    Je vais vous donner le code des mes méthodes, du PageIndexChanging et du gridview dans la partie asp, mais je sais pas si ça va servir à grand chose...


    méthode afficheGridView() :
    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
        public void afficheGridView()
        {
            string requete;
            string message = "Problème lors de la connexion";
            SqlConnection connexion = new SqlConnection("Data Source=STQY-589\\SQLEXPRESS; Initial Catalog=DossierIndividuel;Integrated Security=True");
            try
            {
                if (connexion.State == ConnectionState.Closed)
                {
                    connexion.Open();
                }
                requete = "SELECT TABLEAU.nomSociete, TABLEAU.libelleFils, TABLEAU.nomGroupeAgence, TABLEAU.nomAgence,  TABLEAU.intituleCategorie, TABLEAU.matricule, nomPrenomSalarie, typeDocument " +
                           "FROM TABLEAU, SALARIE " +
                           "WHERE SALARIE.matriculeRh = '1S111' " +
                           "AND SALARIE.matricule = TABLEAU.matricule ";
                 // Exécution de la requête et affichage du GridView
                 SqlCommand commande = new SqlCommand(requete, connexion);
                 SqlDataAdapter sqlDA = new SqlDataAdapter(commande);
                 DataSet ds = new DataSet();
                 sqlDA.Fill(ds);
                 gvSalarie.DataSource = ds;
                 gvSalarie.DataBind();
                 EnableViewState = true;
                 commande.Dispose();
                 connexion.Close();
            }
            catch (Exception ex)
            {
                Outil.Message(message, this);
                //Console.WriteLine(ex);
            }
        }
    méthode recherche() :
    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
        public void recherche()
        {
            string requete;
            string message = "Problème lors de la connexion";
            SqlConnection connexion = new SqlConnection("Data Source=STQY-589\\SQLEXPRESS; Initial Catalog=DossierIndividuel;Integrated Security=True");
            try
            {
                if (connexion.State == ConnectionState.Closed)
                {
                    connexion.Open();
                }
                // Début de la requête
                if (listSociete.SelectedValue == "entete")
                {
                    requete = "SELECT TABLEAU.nomSociete, TABLEAU.libelleFils, TABLEAU.nomGroupeAgence, TABLEAU.nomAgence,  TABLEAU.intituleCategorie, TABLEAU.matricule, nomPrenomSalarie, typeDocument " +
                              "FROM TABLEAU, SALARIE " +
                              "WHERE SALARIE.matriculeRh = '1S111' " +
                              "AND TABLEAU.nomSociete = '' ";
                }
                else
                {
                    requete = "SELECT TABLEAU.nomSociete, TABLEAU.libelleFils, TABLEAU.nomGroupeAgence, TABLEAU.nomAgence,  TABLEAU.intituleCategorie, TABLEAU.matricule, nomPrenomSalarie, typeDocument " +
                              "FROM TABLEAU, SALARIE " +
                              "WHERE SALARIE.matriculeRh = '1S111' " +
                              "AND TABLEAU.nomSociete = '" + listSociete.SelectedValue + "' ";
                }
                if (listUnite.SelectedValue == "entete")
                {
                    requete = string.Concat(requete, "OR TABLEAU.libelleFils = '' ");
                }
                else
                {
                    requete = string.Concat(requete, "OR TABLEAU.libelleFils = '" + listUnite.SelectedValue + "' ");
                }
                if (listAgence.SelectedValue == "entete")
                {
                    requete = string.Concat(requete, "OR TABLEAU.nomAgence = '' ");
                }
                else
                {
                    requete = string.Concat(requete, "OR TABLEAU.nomAgence = '" + listAgence.SelectedValue + "' ");
                }
                if (listGroupeAgence.SelectedValue == "entete")
                {
                    requete = string.Concat(requete, "OR TABLEAU.nomGroupeAgence = '' ");
                }
                else
                {
                    requete = string.Concat(requete, "OR TABLEAU.nomGroupeAgence = '" + listGroupeAgence.SelectedValue + "' ");
                }
                if (listCategorie.SelectedValue == "entete")
                {
                    requete = string.Concat(requete, "OR TABLEAU.intituleCategorie = '' ");
                }
                else
                {
                    requete = string.Concat(requete, "OR intituleCategorie = '" + listCategorie.SelectedValue + "' ");
                }
                if (txtMatricule.Text == "" )
                {
                    requete = string.Concat(requete, "OR TABLEAU.matricule = '' ");
                }
                else
                {
                    requete = string.Concat(requete, "OR TABLEAU.matricule = '" + txtMatricule.Text + "' ");
                }
                if (txtNomPrenom.Text == "")
                {
                    requete = string.Concat(requete, "OR nomPrenomSalarie = '' ");
                }
                else
                {
                    requete = string.Concat(requete, "OR nomPrenomSalarie = '" + txtNomPrenom.Text + "' ");
                }
                if (listTypeDocument.SelectedValue == "entete")
                {
                    requete = string.Concat(requete, "OR typeDocument = '' ");
                }
                else
                {
                    requete = string.Concat(requete, "OR typeDocument = '" + listTypeDocument.SelectedValue + "' ");
                }
                requete = string.Concat(requete, "GROUP BY TABLEAU.nomSociete, TABLEAU.libelleFils, TABLEAU.nomGroupeAgence, TABLEAU.nomAgence,  TABLEAU.intituleCategorie, TABLEAU.matricule, nomPrenomSalarie, typeDocument");
                // Exécution de la requête et affichage du GridView
                SqlCommand commande = new SqlCommand(requete, connexion);
                SqlDataAdapter sqlDA = new SqlDataAdapter(commande);
                DataSet ds = new DataSet();
                sqlDA.Fill(ds);
                gvSalarie.DataSource = ds;
                gvSalarie.DataBind();
                EnableViewState = true;
                commande.Dispose();
                connexion.Close();
            }
             catch (Exception ex)
            {
                Outil.Message(message, this);
                //Console.WriteLine(ex);
            }
        }
    PageIndexChanging :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        protected void gvSalarie_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            DataSet ds = new DataSet();
            gvSalarie.PageIndex = e.NewPageIndex;
            gvSalarie.DataSource = ds;
            //gvSalarie.DataBind(); 
        }

    ASP.net :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            <asp:GridView ID="gvSalarie" runat="server" AllowPaging="True" AllowSorting="True"
                DataKeyNames="matricule,typeDocument" OnPageIndexChanging="gvSalarie_PageIndexChanging" 
                AutoGenerateColumns="False" 
                SkinID="tableMaitre"
                OnDataBound="gvSalarie_DataBound" 
                OnRowDataBound="gvSalarie_RowDataBound"
                OnSorting="gvSalarie_Sorting" Width="95%">

  8. #8
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    Bonjour
    encore le problème.
    c'est comme ça, que tu va apprendre vite asp.net

    suivant ton dernier message, je te dis que c'est normal, puisque lorsque tu clique sur la pagination et si on appelle la méthode recherche aprés, ça ne va rien afficher car, dans ce cas, les dropdownlists ont comme valeur "entete" et ta requette est construite d'une façon que si les valeurs sont de "entete"
    ça ne va rien récupérer de la base de données.

    il faut que tu crée une et une seule méthode d'accés à la base de données et récupération d'informations, où que se soit au début du lancement de la page
    ou si tu choisi des critères de recherche, donc dans ce cas il faut que tu modifie ta requette dans la méthode recherche(), qlq chose comme ça:
    (ici j'ai modifié la requette, au lieu de Or j'ai met And, tu vas voir pourquoi)

    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
    public void recherche()
            {
                string requete;
                string message = "Problème lors de la connexion";
                SqlConnection connexion = new SqlConnection("Data Source=STQY-589\\SQLEXPRESS; Initial Catalog=DossierIndividuel;Integrated Security=True");
                try
                {
                    if (connexion.State == ConnectionState.Closed)
                    {
                        connexion.Open();
                    }
     
                    requete = "SELECT TABLEAU.nomSociete, TABLEAU.libelleFils, TABLEAU.nomGroupeAgence, TABLEAU.nomAgence,  TABLEAU.intituleCategorie, TABLEAU.matricule, nomPrenomSalarie, typeDocument " +
                            "FROM TABLEAU, SALARIE " +
                            "WHERE SALARIE.matriculeRh = '1S111' " +
                            "AND SALARIE.matriculeRh = TABLEAU.matricule ";
     
                    // Début de la requête
                    if (listSociete.SelectedValue != "entete")
                        requete = string.Concat(requete, "AND TABLEAU.nomSociete = '" + listSociete.SelectedValue + "' ");
     
     
                    if (listUnite.SelectedValue != "entete")
                        requete = string.Concat(requete, "AND TABLEAU.libelleFils = '" + listUnite.SelectedValue + "' ");
     
                    if (listAgence.SelectedValue != "entete")
                        requete = string.Concat(requete, "AND TABLEAU.nomAgence = '" + listAgence.SelectedValue + "' ");
     
                    if (listGroupeAgence.SelectedValue != "entete")
                        requete = string.Concat(requete, "AND TABLEAU.nomGroupeAgence = '" + listGroupeAgence.SelectedValue + "' ");
     
                    if (listCategorie.SelectedValue != "entete")
                        requete = string.Concat(requete, "AND intituleCategorie = '" + listCategorie.SelectedValue + "' ");
     
                    if (txtMatricule.Text.Trim() != String.Empty)
                        requete = string.Concat(requete, "AND TABLEAU.matricule = '" + txtMatricule.Text + "' ");
     
                    if (txtNomPrenom.Text.Trim() != String.Empty)
                        requete = string.Concat(requete, "AND nomPrenomSalarie = '" + txtNomPrenom.Text + "' ");
     
                    if (listTypeDocument.SelectedValue != "entete")
                        requete = string.Concat(requete, "AND typeDocument = '" + listTypeDocument.SelectedValue + "' ");
     
                    requete = string.Concat(requete, "GROUP BY TABLEAU.nomSociete, TABLEAU.libelleFils, TABLEAU.nomGroupeAgence, TABLEAU.nomAgence,  TABLEAU.intituleCategorie, TABLEAU.matricule, nomPrenomSalarie, typeDocument");
                    // Exécution de la requête et affichage du GridView
                    SqlCommand commande = new SqlCommand(requete, connexion);
                    SqlDataAdapter sqlDA = new SqlDataAdapter(commande);
                    DataSet ds = new DataSet();
                    sqlDA.Fill(ds);
                    gvSalarie.DataSource = ds;
                    gvSalarie.DataBind();
                    EnableViewState = true;
                    commande.Dispose();
                    connexion.Close();
                }
                catch (Exception ex)
                {
                    throw;
                }
            }
    et tu va appeller cette méthode dans la page_load, et dans le clique de l'evénement du bouton de recherche par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                    recherche();
            }
     
     protected void btnSearch_Click(object sender, EventArgs e)
            {
                recherche();
            }
    L'event PageIndexChanging, l'idée c'est une fois on clique sur un n° de page, les critères et les données seront les mêmes, c'est juste la page qui va changé, donc on aura besoin de ta méthode recherche():

    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
     protected void gvSalarie_PageIndexChanging(object sender, GridViewPageEventArgs e)
            {
                //DataSet ds = new DataSet();
                //gvSalarie.PageIndex = e.NewPageIndex;
                //gvSalarie.DataSource = ds;
                ////gvSalarie.DataBind(); 
     
                int CurrentIndex = e.NewPageIndex;
     
                if (e.NewPageIndex < 0 || e.NewPageIndex >= gvSalarie.PageCount)
                    CurrentIndex = 0;
     
                gvSalarie.PageIndex = CurrentIndex;
                recherche();
     
            }

    dans ta page aspx, c'est la même chose que t'a fais, juste que tu peux ajouter la propriète PageSize (pour spécifier le nombre de lignes à afficher par page).


    Points Importants:

    1 - essaye de séparer la couche accés aux données à celle de ton interface (ton application web)
    pour ça, crée par exemple un autre projet (class library) où tu peux mettre l'accés à ta base de données, et les différentes méthodes pour récupération
    ou mise à jour des données...
    ensuite tu vas appeller le namespace de ce projet dans ton app. web.
    2 - essaye de rendre ta requette de début un peu plus optimisée, et pour ça, il faut que tu fasse une bonne modélisation de tes tables dans la base de données. Aussi essaye de travailler avec les procédures stockées.

    Comme ça tu verras que tu maitrise et tu organise bien ton travail, si tu laisse ton projet comme ça, à un certain moment tu seras obligé de réputer tt dés le début, car tu vas tomber sur des problèmes qu'on peux résoudre que si on redéveloppe dés le début.
    notre début dans le développement, n'étais pas facile pour nous aussi, surtout avec le framework 1.0 et 1.1

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 8
    Par défaut
    bonjour, je vous donne un exemple

    .aspx Code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Cusomter ID: <asp:DropDownList ID="DropDownList1" runat="server">
                <asp:ListItem>ANTON</asp:ListItem>
                <asp:ListItem>BERGS</asp:ListItem>
                <asp:ListItem>BLONP</asp:ListItem>
                <asp:ListItem>BONAP</asp:ListItem>
            </asp:DropDownList>
            <asp:Button ID="btnSearch" runat="server" Text="Search"          onclick="btnSearch_Click" />
            <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
                onpageindexchanging="GridView1_PageIndexChanging" PageSize="5">
            </asp:GridView>

    .cs Code
    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
    protected void Page_Load(object sender, EventArgs e)
            {
                if (!Page.IsPostBack)
                {
                    DataBinder();
                }
            }
     
            private void DataBinder()
            {
                SqlConnection conn = new SqlConnection("Data Source=Server;Initial Catalog=Northwind;User ID=sa;Password=123456;");
     
                string sql = "select * from orders";
                if (ViewState["Search"] != null)
                {
                    sql = string.Format("select * from orders where customerid = '{0}'", ViewState["Search"].ToString());
                }
     
                SqlDataAdapter da = new SqlDataAdapter(sql, conn);
                DataSet ds = new DataSet();
                da.Fill(ds);
     
                GridView1.DataSource = ds;
                GridView1.DataBind();
            }
     
            protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
            {
                GridView1.PageIndex = e.NewPageIndex;
                DataBinder();
            }
     
            protected void btnSearch_Click(object sender, EventArgs e)
            {
                string search = DropDownList1.SelectedItem.Value;
                ViewState["Search"] = search;
     
                DataBinder();
            }

  10. #10
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 32
    Par défaut
    salut pdglive...
    il est vrai que le code que tu as posté à l'air pas mal, et je t'en remercie...
    Mais lorsque qu'il y a plusieurs dropdownlist, comment on fait avec le ViewState["Search"] = search; et le if (ViewState["Search"] != null)
    ??

  11. #11
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 32
    Par défaut
    Bon et bien j'ai fini par régler mon problème...

    Voila mon code

    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
        public void recherche()
        {
            string requete;
            string message = "Problème lors de la connexion";
            SqlConnection connexion = new SqlConnection("Data Source=STQY-589\\SQLEXPRESS; Initial Catalog=DossierIndividuel;Integrated Security=True");
            try
            {
                if (connexion.State == ConnectionState.Closed)
                {
                    connexion.Open();
                }
                // Début de la requête
                requete = "SELECT TABLEAU.nomSociete, TABLEAU.libelleFils, TABLEAU.nomGroupeAgence, TABLEAU.nomAgence,  TABLEAU.intituleCategorie, TABLEAU.matricule, nomPrenomSalarie, typeDocument " +
                          "FROM TABLEAU, SALARIE " +
                          "WHERE SALARIE.matriculeRh = '" + matricule + "' ";
                if (listSociete.SelectedValue == "entete")
                {
                    requete = requete;
                }
                else
                {
                    requete = string.Concat(requete, "AND TABLEAU.nomSociete = '" + listSociete.SelectedValue + "' ");
                }
                if (listUnite.SelectedValue == "entete")
                {
                    requete = requete;
                }
                else
                {
                    requete = string.Concat(requete, "AND TABLEAU.libelleFils = '" + listUnite.SelectedValue + "' ");
                }
                if (listAgence.SelectedValue == "entete")
                {
                    requete = requete;
                }
                else
                {
                    requete = string.Concat(requete, "AND TABLEAU.nomAgence = '" + listAgence.SelectedValue + "' ");
                }
                if (listGroupeAgence.SelectedValue == "entete")
                {
                    requete = requete;
                }
                else
                {
                    requete = string.Concat(requete, "AND TABLEAU.nomGroupeAgence = '" + listGroupeAgence.SelectedValue + "' ");
                }
                if (listCategorie.SelectedValue == "entete")
                {
                    requete = requete;
                }
                else
                {
                    requete = string.Concat(requete, "AND TABLEAU.intituleCategorie = '" + listCategorie.SelectedValue + "' ");
                }
                if (txtMatricule.Text == "" )
                {
                    requete = requete;
                }
                else
                {
                    requete = string.Concat(requete, "AND TABLEAU.matricule = '" + txtMatricule.Text + "' ");
                }
                if (txtNomPrenom.Text == "")
                {
                    requete = requete;
                }
                else
                {
                    requete = string.Concat(requete, "AND nomPrenomSalarie = '" + txtNomPrenom.Text + "' ");
                }
                if (listTypeDocument.SelectedValue == "entete")
                {
                    requete = requete;
                }
                else
                {
                    requete = string.Concat(requete, "AND typeDocument = '" + listTypeDocument.SelectedValue + "' ");
                }
                requete = string.Concat(requete, "GROUP BY TABLEAU.nomSociete, TABLEAU.libelleFils, TABLEAU.nomGroupeAgence, TABLEAU.nomAgence,  TABLEAU.intituleCategorie, TABLEAU.matricule, nomPrenomSalarie, typeDocument");
     
                // Exécution de la requête et affichage du GridView
                SqlCommand commande = new SqlCommand(requete, connexion);
                SqlDataAdapter sqlDA = new SqlDataAdapter(commande);
                DataSet ds = new DataSet();
                sqlDA.Fill(ds);
                gvSalarie.DataSource = ds;
                gvSalarie.DataBind();
                EnableViewState = true;
                commande.Dispose();
            }
             catch (Exception ex)
            {
                Outil.Message(message, this);
                //Console.WriteLine(ex);
            }
        }
    Et je n'ai plus que cette méthode pour affiche mon gridview, qu'il y ai recherche ou pas... et ça fonctionne, ainsi que la pagination... ^^

  12. #12
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    Bonjour,

    Good for you miss78700
    J'espère que t'a appris bcp de choses de cette anomalie.
    En fait, t'a vu mon dernier msg dans cette discussion ? ça parle de la même solution

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/02/2014, 14h43
  2. [Débutant] Pb GridView : lier une méthode de Sorting(OnSorting) dans le code behind
    Par tikjdaoui dans le forum Développement Web avec .NET
    Réponses: 0
    Dernier message: 23/10/2012, 18h02
  3. Binding ListView - GridView dans le code Behind
    Par Anthony14 dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 22/02/2012, 11h08
  4. GridView - Gestion de la pagination sans ObjectDataSource
    Par Johann7751 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 16/08/2010, 14h14
  5. Réponses: 3
    Dernier message: 12/06/2007, 10h31

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