salut!
voila, je voudrais savoir comment faire pour utiliser un checkbox dans un gridview. voila, il y a trois colonne dans mon gridview et je voudrais recuperer tous les donnees de chaque ligne dans le checkbox est cocher. merci pour votre aide!
Version imprimable
salut!
voila, je voudrais savoir comment faire pour utiliser un checkbox dans un gridview. voila, il y a trois colonne dans mon gridview et je voudrais recuperer tous les donnees de chaque ligne dans le checkbox est cocher. merci pour votre aide!
J'ai repondu a une question similqire il y a peu de temps. Le but etait en plus de gerer les evenements de type tri, pagination...Je te redonne la demarche :
En utilisant :
tu vas utiliser dans le pageload une arraylist pour stocker l'état des cases à cocher:Code:using System.Collections;
Si tu gères la pagination et une cellule d'entête pour cocher ou décocher toutes les cases à cocher, tu vas devoir faire quelque chose qui ressemble à ça :Code:
1
2
3
4
5
6
7
8
9
10 ArrayList CheckBoxArray; if (ViewState["CheckBoxArray"] != null) { CheckBoxArray = (ArrayList)ViewState["CheckBoxArray"]; } else { CheckBoxArray = new ArrayList(); }
Enfin, tu vas itérer sur tes lignes pour vérifier l'état des cases à cocher :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 int CheckBoxIndex; bool CheckAllWasChecked=false; CheckBox chkAll = (CheckBox)GridView1.HeaderRow.Cells[0].FindControl("chkAll"); string checkAllIndex = "chkAll-" + GridView1.PageIndex; if (chkAll.Checked) { if (CheckBoxArray.IndexOf(checkAllIndex) == -1) { CheckBoxArray.Add(checkAllIndex); } } else { if (CheckBoxArray.IndexOf(checkAllIndex) != -1) { CheckBoxArray.Remove(checkAllIndex); CheckAllWasChecked = true; } }
Tu gères maintenant l'état de tes cases à cocher dans une arraylist persistée sur ta page. Il te reste à utiliser cette liste lors de l'évènement que tu gères (sorting, paging...)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 for (int i = 0; i < GridView1.Rows.Count; i++) { if (GridView1.Rows[i].RowType == DataControlRowType.DataRow) { CheckBox chk = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); CheckBoxIndex = GridView1.PageSize * GridView1.PageIndex + (i + 1); if (chk.Checked) { if (CheckBoxArray.IndexOf(CheckBoxIndex) == -1 && !CheckAllWasChecked) { CheckBoxArray.Add(CheckBoxIndex); } } else { if (CheckBoxArray.IndexOf(CheckBoxIndex) != -1 || CheckAllWasChecked) { CheckBoxArray.Remove(CheckBoxIndex); } } } }
En espérant que cela te seras utile. Je t'invite à jeter un oeil aux notion de viewstate si tu n'es pas familier avecCode:
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 ArrayList CheckBoxArray = (ArrayList)ViewState["CheckBoxArray"]; string checkAllIndex = "chkAll-" + GridView1.PageIndex; if (CheckBoxArray.IndexOf(checkAllIndex) != -1) { CheckBox chkAll = (CheckBox)GridView1.HeaderRow.Cells[0].FindControl("chkAll"); chkAll.Checked = true; } for (int i = 0; i < GridView1.Rows.Count; i++) { if (GridView1.Rows[i].RowType == DataControlRowType.DataRow) { if (CheckBoxArray.IndexOf(checkAllIndex) != -1) { CheckBox chk = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); chk.Checked = true; } else { int CheckBoxIndex =GridView1.PageSize*(GridView1.PageIndex)+(i + 1); if (CheckBoxArray.IndexOf(CheckBoxIndex) != -1) { CheckBox chk = (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); chk.Checked = true; } } } }