注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

樱之花

叶散的时候,你明白欢聚;花谢的时候,你明白青春.

 
 
 

日志

 
 
关于我

分类中“我的实验室”是我在日常工作中的一些知识总结,有些写的比较匆忙,可能大家在阅读时会产生困扰,后期有时间我会重新整理编辑,谢谢大家的到访,您们的支持是我前进的动力!

网易考拉推荐

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

2012-07-24 22:15:23|  分类: .NET/C# |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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

 

客户端代码
 <asp:GridView ID="gvItems" runat="server" >
     <Columns>
       <asp:TemplateField HeaderText="选项">
          <ItemTemplate>
             <asp:CheckBox ID="rbtnName"  runat="server" cid='<%# Eval("CID") %>'
                    oncheckedchanged="rbtnName_CheckedChanged"/>
          </ItemTemplate>
       </asp:TemplateField>
     </Columns>
  </asp:GridView>
  <AspNetPager ID="anpPage" runat="server" PageSize="8" OnPageChanged="anpResume_PageChanged">
  </AspNetPager>

代码页
     //声明保存选项的变量
        ArrayList alItems
       {
             set { ViewState["alItems"] = value; }
             get { return (ArrayList)ViewState["alItems"]; }
       }
 
     //实例化这个变量
      protected void Page_Load(object sender, EventArgs e)
      {
             if (!IsPostBack)
             {
                 alItems = new ArrayList();             
             }
      }
 
      #region 选择题目名称时发生的事件,将选中的值保存到ArrayList数组中 18      protected void rbtnName_CheckedChanged(object sender, EventArgs e)
      {
             CheckBox cb = (CheckBox)sender;
             int subID = Convert.ToInt32(cb.Attributes["cid"]);
 
             if (cb.Checked == true)
             {
                 alItems.Add(subID);
             }
             else
             {
                 alItems.Remove(subID);
             }
      }
      #endregion
 
      #region 绑定Check列表,用于分页和编辑时的视图状态保存
      private void bindCheckedByList()
      {         
             for (int i = 0; i <= gvItems.Rows.Count - 1; i++)
             {
                 CheckBox cb = (CheckBox)gvItems.Rows[i].FindControl("rbtnName");
                 int subID = Convert.ToInt32(cb.Attributes["cid"]);
 
                 if (alItems.Contains(subID))
                 {
                     cb.Checked = true;
                 }
             }
      }
      #endregion
 
      //分页
       protected void anpResume_PageChanged(object sender, EventArgs e)
      {
             BindData();   //绑定GridView数据的方法
             bindCheckedByList();  //绑定Check列表
      }

  评论这张
 
阅读(1044)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017