Gridview实现分页保留Check的选中状态

本文介绍了一种使用ASP.NET中的CheckBox控件结合GridView和AspNetPager实现分页时保持用户选择状态的方法。通过利用ViewState特性,可以在不同页面间保存用户的选项,并在返回时正确还原这些选项。
摘要由CSDN通过智能技术生成

原理很简单,利用CheckBox的属性cid来取选中的值,在代码页保存到页面ArrayList类型的ViewState变量中,在分页时触发事件对选中的值进行还原。

 

客户端代码
 
   
1 < asp:GridView ID ="gvItems" runat ="server" >
2 < Columns >
3 < asp:TemplateField HeaderText ="选项" >
4 < ItemTemplate >
5 < asp:CheckBox ID ="rbtnName" runat ="server" cid ='<%# Eval("CID") % > '
6 oncheckedchanged="rbtnName_CheckedChanged"/>
7 </ ItemTemplate >
8 </ asp:TemplateField >
9 </ Columns >
10   </ asp:GridView >
11   < AspNetPager ID ="anpPage" runat ="server" PageSize ="8" OnPageChanged ="anpResume_PageChanged" >
12   </ AspNetPager >

   

 

 

 

 

代码页
 
   
1      // 声明保存选项的变量
2   ArrayList alItems
3 {
4 set { ViewState[ " alItems " ] = value; }
5 get { return (ArrayList)ViewState[ " alItems " ]; }
6 }
7
8    // 实例化这个变量
9      protected void Page_Load( object sender, EventArgs e)
10 {
11 if ( ! IsPostBack)
12 {
13 alItems = new ArrayList();
14 }
15 }
16
17 #region 选择题目名称时发生的事件,将选中的值保存到ArrayList数组中
  18 protected void rbtnName_CheckedChanged( object sender, EventArgs e)
19 {
20 CheckBox cb = (CheckBox)sender;
21 int subID = Convert.ToInt32(cb.Attributes[ " cid " ]);
22
23 if (cb.Checked == true )
24 {
25 alItems.Add(subID);
26 }
27 else
28 {
29 alItems.Remove(subID);
30 }
31 }
32 #endregion
33
34 #region 绑定Check列表,用于分页和编辑时的视图状态保存
35 private void bindCheckedByList()
36 {
37 for ( int i = 0 ; i <= gvItems.Rows.Count - 1 ; i ++ )
38 {
39 CheckBox cb = (CheckBox)gvItems.Rows[i].FindControl( " rbtnName " );
40 int subID = Convert.ToInt32(cb.Attributes[ " cid " ]);
41
42 if (alItems.Contains(subID))
43 {
44 cb.Checked = true ;
45 }
46 }
47 }
48 #endregion
49
50 // 分页
51   protected void anpResume_PageChanged( object sender, EventArgs e)
52 {
53 BindData();    // 绑定GridView数据的方法
54 bindCheckedByList();   // 绑定Check列表
55 }
56

 

 

 

转载于:https://www.cnblogs.com/shawker/archive/2010/10/28/1863674.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值