Checkbox sur un gridview paginé et filtré
Bonsoir,
Je m'adresse à vous car je me trouve face à un problème (apparament déjà soulevé mais resté sans réponse dans les forums développez...)
Voici le contexte :
J'ai un gridview paginé, qui renvoie une liste d'éléments (des produits en l'occurence). J'ai mis en place un système qui permet de filtrer cette liste (en restreignant la liste par le libellé des produits par exemple).
Je peux donc avoir à l'écran une liste complète, ou restreinte, toujours paginée (selon le nombre de résultats de la requête).
Le but de la manoeuvre :
Chaque ligne est dotée en ItemTemplate d'une checkbox, qui lorsqu'elles sont cochées, stockent dans un array en session l'id des produits checkés. Cette sauvegarde intervient au moment du changement de page dans la pagination.
Le problème :
Ma fonction de récupération des produits checkés fonctionne sur une liste complète, mais pas sur une liste filtrée.
Voici mon code :
Code:
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
|
Protected Sub ValideCheckbox()
Dim ArrayList As New ArrayList()
If Not Session("CHECKED_ITEMS") Is Nothing Then
ArrayList = Session("CHECKED_ITEMS")
End If
For Each row As GridViewRow In GVProduit.Rows
Dim Cbox As New System.Web.UI.WebControls.CheckBox
Dim PrdIdTexte As New System.Web.UI.WebControls.Label
Cbox = row.FindControl("CbSelected")
PrdIdTexte = row.FindControl("lblIdProd")
If Cbox.Checked = True Then
If ArrayList.Contains(PrdIdTexte.Text) Then
'Rien pour le moment
Else
ArrayList.Add(PrdIdTexte.Text)
End If
Else
ArrayList.Remove(PrdIdTexte.Text)
End If
Next
Session("CHECKED_ITEMS") = ArrayList
End Sub |
Sur une liste complète, la ligne "If Cbox.Checked = True Then" passe correctement. Sur une liste filtrée, même si la checkbox est checkée, le moteur va directement sur le "Else"
Je peux vous donner une autre partie du code si vous en avez besoin, et d'autres explications.
Merci de votre aide!