工作小结(十七)-GridView 翻页后保存CheckBox列的选中状态
后台:


1
翻页后保存CheckBox列的选中状态#region 翻页后保存CheckBox列的选中状态
2
3
/**//// <summary>
4
/// 获取或设置选中项的集合
5
/// </summary>
6
protected ArrayList SelectedItems
7
{
8
get
9
{
10
return (ViewState["mySelectedItems"] != null) ? (ArrayList)ViewState["mySelectedItems"] : null;
11
}
12
set
13
{
14
ViewState["mySelectedItems"] = value;
15
}
16
}
17
/**//// <summary>
18
/// 从当前页收集选中项的情况
19
/// </summary>
20
protected void CollectSelected()
21
{
22
ArrayList selectedItems = null;
23
if (this.SelectedItems == null)
24
selectedItems = new ArrayList();
25
else
26
selectedItems = this.SelectedItems;
27
28
for (int i = 0; i < this.gridNodesInfo.Rows.Count; i++)
29
{
30
string id = this.gridNodesInfo.Rows[i].Cells[1].Text;
31
CheckBox cb = this.gridNodesInfo.Rows[i].FindControl("chkDo") as CheckBox;
32
if (selectedItems.Contains(id) && !cb.Checked)
33
selectedItems.Remove(id);
34
if (!selectedItems.Contains(id) && cb.Checked)
35
selectedItems.Add(id);
36
}
37
this.SelectedItems = selectedItems;
38
}
39
40
protected void gridNodesInfo_DataBinding(object sender, EventArgs e)
41
{
42
//在每一次重新绑定之前,需要调用CollectSelected方法从当前页收集选中项的情况
43
CollectSelected();
44
}
45
protected void gridNodesInfo_RowDataBound(object sender, GridViewRowEventArgs e)
46
{
47
//这里的处理是为了回显之前选中的情况
48
if (e.Row.RowIndex > -1 && this.SelectedItems != null)
49
{
50
DataRowView row = (DataRowView)e.Row.DataItem;
51
CheckBox cb = (CheckBox)e.Row.FindControl("chkDo");
52
if (this.SelectedItems.Contains(row["nodeid"].ToString()))
53
cb.Checked = true;
54
else
55
cb.Checked = false;
56
}
57
}
58
#endregion
59
60


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

前台:


1
<asp:GridView ID="gridNodesInfo" runat="server" AutoGenerateColumns="False" Width="100%" PageSize="5" AllowPaging="true" EmptyDataText="没有数据" OnPageIndexChanging="gridNodesInfo_PageIndexChanging" OnDataBinding="gridNodesInfo_DataBinding" OnRowDataBound="gridNodesInfo_RowDataBound">
2
<Columns>
3
<asp:TemplateField>
4
<ItemTemplate>
5
<asp:CheckBox ID="chkDo" runat="server" Style="position: relative; left: 2px; top: 2px;" />
6
</ItemTemplate>
7
</asp:TemplateField>
8
<asp:BoundField DataField="nodeid" HeaderText="节点ID" />
9
<asp:BoundField DataField="nodeName" HeaderText="节点名" />
10
<asp:BoundField DataField="parentid" HeaderText="父节点ID" />
11
<%--<asp:BoundField DataField="parentname" HeaderText="父节点名" />--%>
12
<asp:BoundField DataField="IsNull" HeaderText="是否为空" />
13
</Columns>
14
<HeaderStyle CssClass="GridView_Head" />
15
<AlternatingRowStyle CssClass="GridView_Alter" />
16
<RowStyle CssClass="GridView_Row" />
17
</asp:GridView>
18
19

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19
