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 :

[VB.NET]Probleme datagrid avec checkbox et pagination


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 29
    Par défaut [VB.NET]Probleme datagrid avec checkbox et pagination
    Bonjour a tous,

    j'ai un gros probleme voilà
    Je dispose d un datagrid avec une colonne de checkbox. Ce datagrid est paginé. Lorsque par exemple je choisi plusieurs checkboxs sur plusieurs lignes (par exemple sur la page 1),puis je clique sur la page 2 en choisissant d autres chexkboxs.
    Lorsque je reviens sur la page 1, les checkboxs que j avais cochée ne le sont plus...par contre sur la page 2 , les checkbox que j'avais cochées le sont bien.

    j'ai mis mes checkbox cochés dans un tableau,mais c'est comme ci seules les checkbox de la dernière page étais cochées
    Quelqu un aurait une idée pour que les checkboxs cochés de toutes les pages le restent car là je séche
    Merci d avance

    je me suis inspiré de ce post mais sans succés:

    http://www.developpez.net/forums/showthread.php?t=41551

    voici 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
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            If Not Page.IsPostBack Then
               ' recupére le cache
                dataset = Cache("dscache")
                'Rempli le datagrid
                DataGrid1.DataSource = dataset
                DataGrid1.DataBind()
                 End If
    
    
    'Procédure de pagination
        Private Sub datagrid_pageindexchanged(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged
         
            Dim m As Integer
            Dim oDGItem As DataGridItem
            m = 0
            'recupere les lignes sélectionnées
            For Each oDGItem In DataGrid1.Items
                If CType(oDGItem.FindControl("CheckBox1"), CheckBox).Checked then
    'je les sctokes dans un tableau d'entier tbint
                    m += 1
                    ReDim Preserve tbint(2, m)
                    tbint(1, m) = oDGItem.Cells(1).Text()
                    tbint(2, m) = 1
                   End If
            Next
    
    'pagine
            DataGrid1.CurrentPageIndex = e.NewPageIndex
            Afflist()
             
    'recoche les checkbox   
            Dim j As Integer
            For j = 1 To tbint.GetUpperBound(1)
                For Each oDGItem In DataGrid1.Items
                    If oDGItem.Cells(1).Text = tbint(1, j) Then                    CType(oDGItem.FindControl("CheckBox1"),CheckBox).Checked() = True
                    End If
                Next
            Next
    Si quelqu'un vois je lui serait éternellement reconnaissant, Merci

  2. #2
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Par défaut
    Salut,

    Pour eventuellement t'aider, pourrais-tu nous dire si tu est sur .net 1.1 ou 2 et que fait exactement ta methode "Afflist()"

    Merci,

    Greg.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 29
    Par défaut
    Citation Envoyé par GevDev
    Salut,

    Pour eventuellement t'aider, pourrais-tu nous dire si tu est sur .net 1.1 ou 2 et que fait exactement ta methode "Afflist()"

    Merci,

    Greg.

    désolé du retard mais j'étais au boulot sic...
    je suis sur.net 1.1

    affichlist()
    me permet d'afficher des données d'une bdd dans un datagrid via une requete sql
    en esperant que tu peux m'aider

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Par défaut
    Si afflist() rebind ce datagrid, il est normal que tu ne conserve pas l'etat de tes checkbox.
    Pour ce qui est de la solution, je ne peux pas t'aider, car ma solution était de stocker un objet dictionnary(of string, boolean) dans le viewstate mais il n'est malheureusement pas dispo sur le framework 1.1... .
    Je te tiens au courant si une lumière me traverse l'esprit, sinon bon courage pour la resolution de ton probleme ...

    Greg.

    ps : Si c'est possible utilise plutôt un gridview qu'un datagrid, je le trouve perso beaucoup plus pratique

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 29
    Par défaut
    a mince j'essaierais avec un gridview (lundi) alors.
    que pense tu de mettre mon tableau dans une variable de session avant le rebind de mon datagrid puis quand on passe dans la page 2 de la mettre a jour?

    le probleme est que je ne vois comment codé le passage de page et pour mettre a jour ma variable

    merci pour ton aide

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Par défaut
    Tu peux stocker tes infos dans une variable de session (ou dans le viewstate), le but finale etant que après chaque event du gridview concernant le changement de page ou le tri, tu verifies l'état de tes checkboxes sur l'event rowdatabound. Pour cela lorsque tu databind ton gridview tu peux lui indiquer une valeur qui fait office de "clé primaire", le datakey. Sur le rowdatabound, tu modifies la valeur de checkbox.checked row par row, en fonction de tes infos récupérée dans ta variable (stockée en session ou dans le viewstate). Après à toi de choisir sous quelle forme tu veux les stocker (array 2 dimen., string concatenée avec un séparateur, ...), sachant qu'il faut que tu associes une valeur te permettant d'identifier un row (string ou int ==> la valeur du datakey) et une autre permettant de connaitre l'état de la chackbox (1 ou 0, true ou false, ...).

    Humm, j'espere que c'est un minimum clair (c'est lundi matin ...).

    ++,
    Greg.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 29
    Par défaut
    Citation Envoyé par GevDev
    Tu peux stocker tes infos dans une variable de session (ou dans le viewstate), le but finale etant que après chaque event du gridview concernant le changement de page ou le tri, tu verifies l'état de tes checkboxes sur l'event rowdatabound. Pour cela lorsque tu databind ton gridview tu peux lui indiquer une valeur qui fait office de "clé primaire", le datakey. Sur le rowdatabound, tu modifies la valeur de checkbox.checked row par row, en fonction de tes infos récupérée dans ta variable (stockée en session ou dans le viewstate). Après à toi de choisir sous quelle forme tu veux les stocker (array 2 dimen., string concatenée avec un séparateur, ...), sachant qu'il faut que tu associes une valeur te permettant d'identifier un row (string ou int ==> la valeur du datakey) et une autre permettant de connaitre l'état de la chackbox (1 ou 0, true ou false, ...).

    Humm, j'espere que c'est un minimum clair (c'est lundi matin ...).

    ++,
    Greg.

    salut,

    vu que je suis actuellement en stage jusqu'a mercredi soir je n'ai pas pu tester le gridview..
    Mais j'ai quand meme quelques questions a te poser:
    1.t sur que le datakey et rowdatabound existe sous vs 2003?

    2.pour chaque ligne de mon datagrid j'ai un integer qui caracterise un champs de mon datagrid cet integer peut il faire office de datakey?

    pour l'evenement rowdatabound est bien obscur a tu des petites explications a me donner?

    Merci
    a++

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 29
    Par défaut
    je relance le sujet car le probleme est toujours d'actualité.
    j'avais contourner le probleme en mettant en place une barre de défilement mais là j'aimerais bien remplacer ma barre de défilement par la pagination et pouvoir garder le check de mes checkbox quand je change de page.
    personne n'a une réponse a me fournir?

Discussions similaires

  1. [C#] Parcour de Datagrid avec CheckBox
    Par aurelien.tournier dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/10/2006, 19h18
  2. [VB.net] probleme fermeture avec close
    Par ptitesouris dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/05/2006, 11h42
  3. [C#]Datagrid avec checkboxs et pagination
    Par kenzo080 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 19/07/2005, 07h10
  4. [VB.NET]probleme datagrid et pagination
    Par lord_kyshow dans le forum ASP.NET
    Réponses: 5
    Dernier message: 11/05/2005, 17h56
  5. [VB.NET] - Probleme Label avec Database
    Par codez dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/06/2004, 17h37

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