工作小结(十七)-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

翻页后保存CheckBox列的选中状态#region 翻页后保存CheckBox列的选中状态2

3

/**//// <summary>4
/// 获取或设置选中项的集合5
/// </summary>6
protected ArrayList SelectedItems7

{8
get9

{10
return (ViewState["mySelectedItems"] != null) ? (ArrayList)ViewState["mySelectedItems"] : null;11
}12
set13

{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
else26
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
else55
cb.Checked = false;56
}57
}58
#endregion59

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
<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


浙公网安备 33010602011771号