今天在Repeater控件中碰到一个全选的操作,于是上网查了一下,找到一个觉得比较好,便记录下来,
界面代码简化之后(全选操作):
<scripttype="text/javascript">functionSelectAll(parentChk, ChildId, bigControlID) {varoElements=document.getElementsByTagName("INPUT");varbIsChecked=parentChk.checked;for(i=0; i<oElements.length; i++) {if(IsCheckBox(oElements[i])&&IsMatch(oElements[i].id, ChildId, bigControlID)) {
oElements[i].checked=bIsChecked;
}
}
}
functionIsMatch(id, ChildId, controlID) {varsPattern='^'+controlID+'_+.*'+ChildId+'$';varoRegExp=newRegExp(sPattern);if(oRegExp.exec(id))returntrue;elsereturnfalse;
}functionIsCheckBox(chk) {if(chk.type=='checkbox')returntrue;elsereturnfalse;
}</script><asp:RepeaterID="Repeater_xx"runat="server"><HeaderTemplate><table><tr><th>选项</th><th>数据</th></tr></HeaderTemplate><ItemTemplate><tr><td><asp:CheckBoxID="CheckBox_ID"runat="server"Checked="false"/></td><td><asp:Labelrunat="server"ID="Label_ID"Text='<%#Eval("Label_ID")%>'></asp:Label></td><tr></ItemTemplate><FooterTemplate></table></FooterTemplate></asp:Repeater><asp:CheckBoxrunat="server"ID="CheckBoxCz"Text="全选/反选"onclick='SelectAll(this,"CheckBox_ID","Repeater_xx")'/>
<input class="anniu" id="input_gs" type="submit" runat="server" onserverclick="Gssubmit_Click" value="操作" />
后台根据选中项获取当前行的数据然后进行操作
publicvoidGssubmit_Click(objectsender, EventArgs e)
{for(inti =0; i < Repeater_xx.Items.Count; i++)
{//获取复选框CheckBox cb = (CheckBox)rpt_Paper.Items[i].FindControl("CheckBoxCz");//判断是否被选中if(cb !=null&& cb.Checked ==true)
{
Label id= (Label)rpt_Paper.Items[i].FindControl("Lable_ID");//获取该行IDintID=Convert.ToInt32(Id.Text);//相应操作......
}
}
}