Bonjour,

j'ai une page affichant une liste paginée (gridview) dans une fenêtre modale. Cette gridview est alimentée par un objectdatasource qui ma ramène uniquement les valeurs à afficher.

Cette liste est composée de quatre champs dont un identifiant et une checkbox.
Ma modale possède un bouton save qui sauvegardera en base de données les éléments sélectionnés.

Seulement ma liste possède plusieurs pages. Il faut donc que je puisse conserver la saisie d'une page à l'autre.

J'avais pensé utilisé une liste qui serait nourrie à chaque changement de page.
J'en avais d'abord fait une variable de classe. Lorsque je passe de ma première page à ma seconde page, ma liste est bien remplie. Aucun souci.

Si je reviens à ma première page, je perds mes valeurs de la première page.
Un peu de code si nécessaire :
Code c# : 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
 
public partial class DetaUser : WebInterface
{
   private List<string> checkBoxChecked;
   protected override void Page_Load(object sender, EventArgs e)
   {
      checkBoxChecked = new List<string>();
   }
 
   protected void btnNext_Click(object sender, System.Web.UI.ImageClickEventArgs e)
   {
      SaveCheckBox();
   }
 
   protected void btnPrevious_Click(object sender, System.Web.UI.ImageClickEventArgs e)
   {
      SaveCheckBox();
   }
 
   private void SaveCheckBox() {
      CheckBox chkSelected;
      string identifiant;
      foreach (GridViewRow r in applicationGridView.Rows)
      {
         // VERIFIER que l'on est sur uen ligne
         if (r.RowType == DataControlRowType.DataRow) {
            // RECUPERER le checkbox
            chkSelected = r.FindControl("chkSelection") as CheckBox;
            // RECUPERER l'identifiant associé
            identifiant = (r.FindControl("identifiant") as Label).Text;
             // VERIFIER s'il existe dans la liste
            var q = from e in checkBoxChecked
                       where e.ToString().Equals(identifiant)
                       select true;
            bool result = q.SingleOrDefault();
 
            if (chkSelected.Checked && !result)
            {
               // AJOUTER si pas de résultat
               checkBoxChecked.Add(identifiant);
            }
            else if (result)
            {
               checkBoxChecked.Remove(identifiant);
            }
         }
      }
      afficheList();
   }
}

Pour info, je ne peux pas utiliser de variable de session
Merci de votre aide