GridView翻页时保持CheckBox选择状态

我爱大大泡泡糖 2013-12-03 01:30:37
我是新手,最近老师布置了个GridView控件的作业,请问这个怎么弄啊?
...全文
251 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
风一样的大叔 2013-12-03
  • 打赏
  • 举报
回复
 
//定义翻页bool 1private changed=false;//定义保存选择项主键集合属性 
1  protected List<string> SelectedItems
2    {
3       get { return ViewState["selecteditems"]!=null ? (List<string>)ViewState["selecteditems"] : null; }
4        set { ViewState["selecteditems"] = value; }
5    }//获取选择项主键
 1private void GetSelectedItem()
 2{
 3 List<string> selecteditems = null;
 4 if (this.SelectedItems == null)
 5 {
 6    selecteditems = new List<string>();
 7 }
 8 else
 9 {
10    selecteditems = this.SelectedItems;
11 }
12
13 //获取选择的记录
14     for (int i = 0; i < this.gvwResult.Rows.Count; i++)
15    {
16           CheckBox cbx = (CheckBox)this.gvwResult.Rows[i].FindControl("chkSelect");
17
18            string id = this.gvwResult.DataKeys[i].Values[0].ToString();
19
20            if (selecteditems.Contains(id) && !cbx.Checked)
21                selecteditems.Remove(id);
22            if (!selecteditems.Contains(id) && cbx.Checked)
23                selecteditems.Add(id);
24        }
25        this.SelectedItems = selecteditems;
26}//在 DataBinding事件中执行GetSelectedItem()
1protected void gvwResult_DataBinding(object sender, EventArgs e)
2    {
3        GetSelectedItem();
4    changed=true;
5    }//在行绑定时确定CheckBox选中状态
 1protected void gvwResult_RowDataBound(object sender, GridViewRowEventArgs e)
 2    {      
 3        if (e.Row.RowIndex > -1 && this.SelectedItems!= null)
 4        {           
 5            CheckBox cbx = (CheckBox)e.Row.FindControl("chkSelect");
 6            string id = this.gvwResult.DataKeys[e.Row.RowIndex].Values[0].ToString();
 7            if (SelectedItems.Contains(id))
 8                cbx.Checked = true;
 9            else
10                cbx.Checked = false;
11        }
12    }
 
//根据changed确定是否再执行GetSelectedItem(),否则不翻页时选择项获取不到.
1protected void btnConfirm_Click(object sender, EventArgs e)
2    {
3      if(!changed)
4        GetSelectedItem();
5      foreach (string id in (ArrayList)this.SelectedItems)
6        {
7                  //..
8                 }
9     }
楼主万事还要靠自己啊
mc_dv 2013-12-03
  • 打赏
  • 举报
回复
学弟,北大的吗,给师兄点分
___________小P 2013-12-03
  • 打赏
  • 举报
回复
如果老师布置的么..直接调用他的控件 然后以后慢慢学不调用控件的方法
Im_Sorry 2013-12-03
  • 打赏
  • 举报
回复
引用 楼主 u013027831 的回复:
我是新手,最近老师布置了个GridView控件的作业,请问这个怎么弄啊?
页面回发的时候,让他重新选中!或者在他的事件里面写!
全栈极简 2013-12-03
  • 打赏
  • 举报
回复
将你选中的编号保存到cookie之类的状态保持容器中,翻页的时候设置checkbox的check状态为true。
by_封爱 2013-12-03
  • 打赏
  • 举报
回复
分页的数据源 应该是DataTable之类的东西.. 强制加一列

dt.col.add("checkState",typeof(string));
然后每次分页的时候 修改这个dt的checkState(通过checkbox的选择) 然后加载的时候判断

<input type='checkbox' <%#Eval("checkState").tostring()=="true"?"checked=checked":""%>
差不多就是这个意思.. 手写代码可能有误, 如果你用第三方的dev的话 他本身就带这个功能.

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧