Bonjour,
J'ai un gridview alimenté par un sqldatasource et dans lequel j'ai rajouté un checkbox je met à true ou false selon certain critères mais le problème est qu'à chaque fois que je change de page dans le gridview, les valeurs des checkbox sont fausses!
J'ai alors implémenté la méthode OnPageIndexChanging, je lui donne le nouvel index puis fais l'opération sur mes checkbox jusqu'à là tout fonctionne bien mais à l'affichage les checkbox sont toutes à false !
même chose pour OnPageIndexChanged, là c'est encore pire, j'avais compris qu'il s'exécutait après la pagination du gridview mais quand je vais voir dans quelle page il est, il se trouve tjrs dans la précédente!
enfin bref dans les 2 cas, je pense qu'il y a quelque chose qui s'exécute après ces méthodes et qui me change les valeurs de mes checkbox mais je ne vois pas quoi !!!
Quelqu'un pourrait m'aider, svp.
mon code Page_Load:
méthode OnPageIndexChanging :
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
52
53
54
55
56
57
58
59
60 protected void Page_Load(object sender, EventArgs e) { NameValueCollection coll; coll = Request.ServerVariables; user = coll["LOGON_USER"].ToString(); SqlParameter puser = new SqlParameter("@user", SqlDbType.VarChar); puser.Value = user; Db conn = new Db(); conn.Open(); conn.GetTable("select wp_vestigingsnr, nom, nomnl, idmag" + " from UPEPU, batiments,stmagasin" + " where UPPER(account)=UPPER(@user)"+ " and codvest= wp_vestigingsnr and codvest=bat"); conn.AddParam(puser); SqlDataReader result = conn.GetResult(); if (result.Read()) { vestnr = int.Parse(result["wp_vestigingsnr"].ToString()); magid = int.Parse(result["idmag"].ToString()); magazijn = result["nom"].ToString(); Lmag.Text = magazijn.Trim(); //Titel } result.Close(); SqlParameter pvestnr = new SqlParameter("@vestnr", SqlDbType.Int); pvestnr.Value = vestnr; conn.GetTable(" select *" + " from stvwprodcom" + " where codvest = @vestnr"+ " order by quantcmd"); conn.AddParam(pvestnr); SqlDataSource2.SelectParameters.Clear(); SqlDataSource2.SelectParameters.Add("vestnr", pvestnr.Value.ToString()); SqlDataSource2.SelectCommand = conn.getCmd(); if (!IsPostBack) { for (int i = 0; i < GridView1.Rows.Count; i++) { string test = GridView1.Rows[i].Cells[6].Text.ToString(); tot = int.Parse(GridView1.Rows[i].Cells[6].Text); if (tot < 1) { ((CheckBox)(GridView1.Rows[i].FindControl("cbSelect"))).Checked = true; ((CheckBox)(GridView1.Rows[i].FindControl("cbSelect"))).Visible = false; } else { ((CheckBox)(GridView1.Rows[i].FindControl("cbSelect"))).Checked = false; ((CheckBox)(GridView1.Rows[i].FindControl("cbSelect"))).Visible = true; } } } conn.Close(); }
P.S : la 1ère fois que rentre dans la page tout fonctionne bien donc les checkbox ont les bonnes valeurs, c'est que quand je change de page que ca déconne!
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 protected virtual void gridChange(object sender, GridViewPageEventArgs e) { GridView1.PageIndex = e.NewIndex; GridView1.DataBind(); for (int i = 0; i < GridView1.Rows.Count; i++) { string test = GridView1.Rows[i].Cells[6].Text.ToString(); tot = int.Parse(GridView1.Rows[i].Cells[6].Text); if (tot < 1) { ((CheckBox)(GridView1.Rows[i].FindControl("cbSelect"))).Checked = true; ((CheckBox)(GridView1.Rows[i].FindControl("cbSelect"))).Visible = false; } else { ((CheckBox)(GridView1.Rows[i].FindControl("cbSelect"))).Checked = false; ((CheckBox)(GridView1.Rows[i].FindControl("cbSelect"))).Visible = true; } } }
Partager