关于GridView的模板列中有CheckBox的分页显示问题

 

最近在做一个项目,里面涉及到Admin对用户的权限进行设定,然后把CheckBox的状态(0未选中,1选中)保存到数据库中。那么当权限设置完并保存成功后,点击该页面,页面初始化的时候根据 数据库中状态字段显示出所有CheckBox的状态,这样操作在不分页的时候是没有问题的,当数据很多,需要进行分页时,问题就出来了:无论点击那一页,页面现实的CheckBox的状态始终和第一页显示的一样,不发生变化,具体的页面我现在没法恢复了,我现在只有正确的页面如下,网上的办法是记忆每一页CheckBox的状态信息,我试了,感觉方法不好。我自己用另外一种方法实现了,作为今天的总结:

第一页如图1-1

                                                  图1-1

 

刚开始显示的错误的页面我现在没法截取了,望谅解啊。错误的页面是所有CheckBox和图1-1的所有CheckBox的状态相同。

第二页的正确效果如图1-2:

                                图1-2

 

 

在每一个CheckBox的旁边放一个Label,用于绑定数据库中对应的字段(0或1),在GridView的DataBind方法中循环判断Label的Text,若Label.Text==“1”,则CheckBox选中,否则不选中。,就这么简单,部分代码如下:
DataTable T_UserSeniority = UserSeniorityCLBase.GetAll();
        for (int i = 0; i < gvSeniority.Rows.Count; i++)
        {
            if (i < T_UserSeniority.Rows.Count)
            {
      //int UserID = Convert.ToInt32(gvSeniority.DataKeys[i].Value.ToString());//获取主键值
                CheckBox CBDesigner = gvSeniority.Rows[i].FindControl("CBDesigner") as CheckBox;   //设总
                Label lblDesigner = gvSeniority.Rows[i].FindControl("lblDesigner") as Label;
                if (lblDesigner.Text == "1")
                {
                    CBDesigner.Checked = true;
                }
                else
                {
                    CBDesigner.Checked = false;
                }
                CheckBox CBProfessionalPrincipal = gvSeniority.Rows[i].FindControl("CBProfessionalPrincipal") as CheckBox;   //专业负责人
                Label lblProfessionalPrincipal = gvSeniority.Rows[i].FindControl("lblProfessionalPrincipal") as Label;
                if (lblProfessionalPrincipal.Text == "1")
                {
                    CBProfessionalPrincipal.Checked = true;
                }
                else
                {
                    CBProfessionalPrincipal.Checked = false;
                }
    }
  }
posted @ 2012-05-20 13:29  jsping68  阅读(614)  评论(0编辑  收藏  举报