关于在repeater中的checkbox实行多选和全选
今天项目中用到这一块,是一个b2b商城,业务是别人给客户留言后,客户从会员中心的留言管理中查看,用checkbox实行多选和全选后进行批量审核
首先在checkbox后加个hidden,作用见代码:
string getuserid = "";
for (int i = 0; i < Repeater1.Items.Count; i++)
{
CheckBox cb = (CheckBox)Repeater1.Items[i].FindControl("ckBoxly");
if (cb.Checked)
{
HiddenField hd = (HiddenField)Repeater1.Items[i].FindControl("hdCkBox");
getuserid += hd.Value + ",";
}
}
getuserid = getuserid.Substring(0, getuserid.Length - 1);
hidden在repeater绑定的是留言表中的id,这样,就获得了选中项的id,放到getuserid中,在利用sql语句的in来做
=============================================================================================
全选和取消(下面是转别人的)
前些日子一直在网上寻找在Repeater中使用CheckBox来实现“全选”和“全消”的例子,可都不太满意,今天请教了高手终于搞清了,其实实现这种功能有两种方式:
第一种利用For循环
For(int i=0;i<=Repeater1.Items.Count;i++)//遍历整Repeater
{
CheckBox cb=New CheckBox();//声明一个CheckBox类型的变量cb
cb=(CheckBox)this.Repeater1.Items[i].FindControl[CheckBox1];/*从Repeater1中找出CheckBox的控件并赋予cb*/
cb.Checked=true;//使CheckBox1的默认状态是被勾选的
}
第二种利用Foreach循环
Foreach(RepeaterItem Item in Repeater1.Items)/*同样是遍历整个Repeater1的项,注意此时的变量类型*/
{
CheckBox cb=New CheckBox;//作用同上
cb=Repeater1.Item.FindControl(CheckBox1);//作用同上
cb.Checked=true;
}
说明:1.上述事件可以放在private void CheckBox_selectAll_Changed(object sender, System.EventArgs e)中
也可以放在private void btn_selectAll_Click(object sender, System.EventArgs e)中
2.上述代码只是实现了“全选”的功能,在实现全消的时候只要是cb.Checked=false;即可,其他的代码不变
3.也可以使用一个if语句来实现符合功能,如果你把上述代码写在一个单击事件里的话,这个复合功能实现的是单击一次实现全选,再单击一次实现全消;如果写在CheckBox_selectAll_Changed(object sender, System.EventArgs e)中则如果CheckBox_selectAll被选中则实现全选功能;反之,实现全消的功能