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 :
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"
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 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
Je peux vous donner une autre partie du code si vous en avez besoin, et d'autres explications.
Merci de votre aide!
Partager