最近在做一个项目,里面涉及到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)
{
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;
}
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;
}
}
}