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 :

Pagination d'un datagrid


Sujet :

ASP.NET

  1. #1
    Membre éclairé Avatar de alicia26
    Inscrit en
    Avril 2007
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 321
    Par défaut Pagination d'un datagrid

    j'obtiens mon datagrid à partir d'un dropdownlist connecté à ma BDD.
    Le problème: les autres pages de mon datagrid ne m'affiche rien et
    en insérant

    le datagrid m'affiche les mêmes données dans toutes les pages .

    Merci pour votre aide

  2. #2
    Membre éprouvé Avatar de Ensiaste2006
    Inscrit en
    Juillet 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juillet 2006
    Messages : 125
    Par défaut
    si tu veux réaliser la pagination dans ta DataGrid, dans l' évenement PageIndexChanged fait :

    Datagrid1.CurrentPageIndex = e.NewPageIndex
    Datagrid1.databind()

  3. #3
    Membre éclairé Avatar de alicia26
    Inscrit en
    Avril 2007
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 321
    Par défaut
    bonjour
    et merci pour ta réponse
    en effet en ajoutant ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub MyDataGrid_Page(ByVal sender As Object, ByVal e As DataGridPageChangedEventArgs)
     
    MyDataGrid.CurrentPageIndex = e.NewPageIndex
    MyDataGrid.DataBind()
    End Sub
    et dans mon datagrid
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OnPageIndexChanged="MyDataGrid_Page"
    les autres pages s'affichent,mais le hic maintenant est que comme les données s'affichent en fonction de la valeur de mon dropdownlist,il faut toujours cliquer avant d'afficher les données de mon datagrid sur les autres pages.

    Voici le 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
     Dim MyConnection As SqlConnection
     
     
        Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)
            MyConnection = New SqlConnection("Server=(local); Initial Catalog='mission';" _
                        & " Trusted_Connection=True;")
     
            If Not (IsPostBack) Then
     
                Dim DS As DataSet
                Dim MyCommand As SqlDataAdapter
     
                MyCommand = New SqlDataAdapter("select distinct structure from agent", MyConnection)
                DS = New DataSet()
                MyCommand.Fill(DS, "structure")
     
                MySelect.DataSource = DS.Tables("structure").DefaultView
                MySelect.DataBind()
     
     
            End If
        End Sub
     
        Sub GetAgent_Click(ByVal Sender As Object, ByVal E As EventArgs)
     
            Dim SelectCmd As String = "select idagent,matricule,noms,prenoms,email,structure,qualite,objetmission,pays,ville from agent where structure = @structure"
     
            Dim DS As DataSet
            Dim MyCommand As SqlDataAdapter
     
            MyCommand = New SqlDataAdapter(SelectCmd, MyConnection)
     
            MyCommand.SelectCommand.Parameters.Add(New SqlParameter("@structure", SqlDbType.VarChar, 50))
            MyCommand.SelectCommand.Parameters("@structure").Value = MySelect.Value
     
            DS = New DataSet()
            MyCommand.Fill(DS, "structure")
     
            MyDataGrid.DataSource = DS.Tables("structure").DefaultView
            MyDataGrid.DataBind()
        End Sub
     
        Sub MyDataGrid_Page(ByVal sender As Object, ByVal e As DataGridPageChangedEventArgs)
     
     
            MyDataGrid.CurrentPageIndex = e.NewPageIndex
     
            MyDataGrid.DataBind()
     
        End Sub
    Comment y rémedier??!!

  4. #4
    Membre éclairé Avatar de alicia26
    Inscrit en
    Avril 2007
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 321
    Par défaut
    salut
    il se produit quelque chose que je comprend pas.
    Quand je mets dans mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub MyDataGrid_Page(ByVal sender As Object, ByVal e As DataGridPageChangedEventArgs)
     
    MyDataGrid.CurrentPageIndex = e.NewPageIndex
    MyDataGrid.DataBind()
    End Sub
    la pagination est correct.Mais dès que je suis par exemple à la page N°5 et que je désire changer la valeur de mon dropdownlist en cliquant sur ma liste déroulante,j'ai cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Valeur CurrentPageIndex non valide. Elle doit être >= 0 et < PageCount.
    Je retourne dans mon code et je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyDataGrid.CurrentPageIndex = 0
    impossible de paginer

    une aide,svp????

  5. #5
    Membre éprouvé Avatar de Ensiaste2006
    Inscrit en
    Juillet 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juillet 2006
    Messages : 125
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyDataGrid.CurrentPageIndex = 0
    tu l'as met ou au juste?
    tu a essayé de le mettre avant le bloc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
             MyDataGrid.DataSource = DS.Tables("structure").DefaultView
            MyDataGrid.DataBind()
    ??

  6. #6
    Membre éclairé Avatar de alicia26
    Inscrit en
    Avril 2007
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 321
    Par défaut
    bonjour
    en faite je l'ai mise dans une méthode MyDataGrid_Page que j'appelle dans mon datagrid OnPageIndexChanged="MyDataGrid_Page"

    voici mon code behind

    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
     
    Dim MyConnection As SqlConnection
         Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)
            MyConnection = New SqlConnection("Server=(local); Initial Catalog='mission';" _
                        & " Trusted_Connection=True;")
     
            If Not (IsPostBack) Then
     
                Dim DS As DataSet
                Dim MyCommand As SqlDataAdapter
     
                MyCommand = New SqlDataAdapter("select distinct structure from agent", MyConnection)
                DS = New DataSet()
                MyCommand.Fill(DS, "structure")
                MySelect.DataSource = DS.Tables("structure").DefaultView
                MySelect.DataBind()
            End If
     
        End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub MyDataGrid_Page(ByVal sender As Object, ByVal e As DataGridPageChangedEventArgs)
                 MyDataGrid.CurrentPageIndex = 0
                       MyDataGrid.DataBind()
     
        End Sub
    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
     
        Sub GetAgent_Click(ByVal Sender As Object, ByVal E As EventArgs)
     
            Dim SelectCmd As String = "select idagent,matricule,noms,prenoms,email,structure,qualite from agent where structure = @structure"
     
            Dim DS As DataSet
            Dim MyCommand As SqlDataAdapter
     
            MyCommand = New SqlDataAdapter(SelectCmd, MyConnection)
     
            MyCommand.SelectCommand.Parameters.Add(New SqlParameter("@structure", SqlDbType.VarChar, 50))
            MyCommand.SelectCommand.Parameters("@structure").Value = MySelect.Value
     
            DS = New DataSet()
            MyCommand.Fill(DS, "structure")
     
            MyDataGrid.DataSource = DS.Tables("structure").DefaultView
            MyDataGrid.DataBind()
        End Sub

  7. #7
    Membre éprouvé Avatar de Ensiaste2006
    Inscrit en
    Juillet 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juillet 2006
    Messages : 125
    Par défaut
    si tu fait comme ça, y aura plus de pagination..car ça va boucler sur la premiere page..

    j'ai simulé ton problème dans une application et j'ai reçu la même exception,
    je crois avoir compris le problème.

    lorsque tu choisit une structure avec un nombre d'agent de 10 par exemple, et si la page et 2 items, tu aura 5 pages dans MyDatagrid. mais lorsque tu va choisir une 2éme structure avec 6 agents, MyDatgrid1 se rappel tjrs du plus grand nombre de page, à savoir 10 et non pas 3 !!. si tu a déjà séléctionné la page 8 dans la 1ére structure une exception du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Valeur CurrentPageIndex non valide. Elle doit être >= 0 et < PageCount.
    saute!!!!!
    du fait que l'index 7 et hors limite qui est 6 !!!!


    la solution est : (QUEEEELLLE JOLI MOT SOLUTION )
    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
    Sub GetAgent_Click(ByVal Sender As Object, ByVal E As EventArgs)
     
            Dim SelectCmd As String = "select idagent,matricule,noms,prenoms,email,structure,qualite from agent where structure = @structure"
     
            Dim DS As DataSet
            Dim MyCommand As SqlDataAdapter
     
            MyCommand = New SqlDataAdapter(SelectCmd, MyConnection)
     
            MyCommand.SelectCommand.Parameters.Add(New SqlParameter("@structure", SqlDbType.VarChar, 50))
            MyCommand.SelectCommand.Parameters("@structure").Value = MySelect.Value
     
            DS = New DataSet()
            MyCommand.Fill(DS, "structure")
          
            MyDataGrid.DataSource = DS.Tables("structure").DefaultView
           Try
                MyDataGrid.DataBind()
            Catch ex As Exception
                MyDataGrid.CurrentPageIndex = 0
                MyDataGrid.DataBind()
            End TryCATCH ex AS EXCEPTTION
        End Sub

    il suffit de catcher l'exception, réinitialiser la page à 0, et binder par la suite!!!

  8. #8
    Membre éprouvé Avatar de Ensiaste2006
    Inscrit en
    Juillet 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juillet 2006
    Messages : 125
    Par défaut
    Oooops !!
    y a un CATCH ex AS EXCEPTTION
    ... qui s'est glissé par erreur...
    Excuz

  9. #9
    Membre éclairé Avatar de alicia26
    Inscrit en
    Avril 2007
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 321
    Par défaut
    salut
    décidement
    plus de pagination du tout??

  10. #10
    Membre éclairé Avatar de alicia26
    Inscrit en
    Avril 2007
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 321
    Par défaut
    voici mon code behind
    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
     
    Dim MyConnection As SqlConnection
          Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)
            MyConnection = New SqlConnection("Server=(local); Initial Catalog='mission';" _
                        & " Trusted_Connection=True;")
           
            If Not (IsPostBack) Then
    
                Dim DS As DataSet
                Dim MyCommand As SqlDataAdapter
    
                MyCommand = New SqlDataAdapter("select distinct structure from agent", MyConnection)
                DS = New DataSet()
                MyCommand.Fill(DS, "structure")
                MySelect.DataSource = DS.Tables("structure").DefaultView
                MySelect.DataBind()
                          End If
            
        End Sub
        
        Sub MyDataGrid_Page(ByVal sender As Object, ByVal e As DataGridPageChangedEventArgs)   
         MyDataGrid.CurrentPageIndex = e.NewPageIndex
            
            '   MyDataGrid.DataBind()
            Try
                MyDataGrid.DataBind()
            Catch ex As Exception
                MyDataGrid.CurrentPageIndex = 0
                MyDataGrid.DataBind()
            End Try
        End Sub
    
        Sub GetAgent_Click(ByVal Sender As Object, ByVal E As EventArgs)
    
            Dim SelectCmd As String = "select idagent,matricule,noms,prenoms,email,structure,qualite from agent where structure = @structure"
    
            Dim DS As DataSet
            Dim MyCommand As SqlDataAdapter
    
            MyCommand = New SqlDataAdapter(SelectCmd, MyConnection)
    
            MyCommand.SelectCommand.Parameters.Add(New SqlParameter("@structure", SqlDbType.VarChar, 50))
            MyCommand.SelectCommand.Parameters("@structure").Value = MySelect.Value
    
            DS = New DataSet()
            MyCommand.Fill(DS, "structure")
          
            MyDataGrid.DataSource = DS.Tables("structure").DefaultView
            MyDataGrid.DataBind()
             
        End Sub
    je remarque qu'il est possible de paginer correctement avec la même valeur de MySelect et de paginer avec des valeurs différentes de MySelect si MySelect1 et MySelect3 ont une pagination allant jusqu'au n°2.

    Si par hasard MySelect1 a une page n°4 et je désire aller directement à MySelect5 qui n'a que 3 pages
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Valeur CurrentPageIndex non valide. Elle doit être >= 0 et < PageCount.
    Tout de même,je pense remplacer ma dropdownlist par un textbox,j'ose espérer que ce sera idem.......

  11. #11
    Membre éprouvé Avatar de Ensiaste2006
    Inscrit en
    Juillet 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juillet 2006
    Messages : 125
    Par défaut
    le bloc Try
    Catch
    End TRy
    doit être dans l'évement click sur le bouton GetAgent, si j'ai bien compris, tu as une liste MySelect, dont tu choisi une option, et l'affichage du DataGrid se fait par Click sur le bouton GetAgent??

  12. #12
    Membre éclairé Avatar de alicia26
    Inscrit en
    Avril 2007
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 321
    Par défaut
    ok,çà marche correct
    ma fonction MyDatagrid_Page se réduit alors à:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub MyDataGrid_Page(ByVal sender As Object, ByVal e As DataGridPageChangedEventArgs)   
         MyDataGrid.CurrentPageIndex = e.NewPageIndex
              End Sub
    Merci pour tout
    a++

  13. #13
    Membre éprouvé Avatar de Ensiaste2006
    Inscrit en
    Juillet 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juillet 2006
    Messages : 125
    Par défaut
    Cool !!

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

Discussions similaires

  1. [Dojo] Pagination avec un Datagrid et un queryReadStore
    Par Daniel_Gibot dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 17/02/2012, 16h07
  2. Pagination d'une DataGrid
    Par Invité dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 31/05/2011, 17h51
  3. pagination d'un datagrid e4x
    Par zehni dans le forum Flex
    Réponses: 0
    Dernier message: 11/02/2010, 20h41
  4. pagination d'un datagrid
    Par lesultan2007 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 23/09/2008, 11h48
  5. [c#] pagination d'un Datagrid
    Par ben_2005 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 07/03/2006, 17h14

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