问题描述
前几天,发了个同样的问题,暂时解决了,可以实现选中删除,但是现在的问题是:明明全部选定了,执行删除的时候,只删除第一行的值,下面的checkbox值变成false了
<ItemTemplate><tr><tdalign="center"><asp:CheckBoxID="cb_id"CssClass="checkall"runat="server"/></td><tdalign="center"><asp:LabelID="lb_id"runat="server"Text='<%#Eval("Nid")%>'></asp:Label></td></ItemTemplate>repeater外的代码<asp:LinkButtonID="lbtnDel"runat="server"OnClientClick="returnconfirm('确定要删除这些记录吗?');"OnClick="lbtnDel_Click">删除</asp:LinkButton>
protectedvoidlbtnDel_Click(objectsender,EventArgse){for(inti=0;i<this.rptList.Items.Count;i++){CheckBoxcb=(CheckBox)rptList.Items[i].FindControl("cb_id");intid=Convert.ToInt32(((Label)rptList.Items[i].FindControl("lb_id")).Text);if(cb.Checked){stringstr="deletefromT_NewswhereNid="+id;DbHelper.NoResultCommand(str);PageCountBind(1,drNewsCatList.SelectedValue);}}}点击删除的时候,只删除第一行的值,下面的checkbox值就全部是false了,现在都不想用全选删除了
解决方案
解决方案二:
补充一点:把linkbutton里的代码改成下面的样子protectedvoidlbtnDel_Click(objectsender,EventArgse){for(inti=0;i<this.rptList.Items.Count;i++){CheckBoxcb=(CheckBox)rptList.Items[i].FindControl("cb_id");intid=Convert.ToInt32(((Label)rptList.Items[i].FindControl("lb_id")).Text);if(cb.Checked){Response.Write(id);//stringstr="deletefromT_NewswhereNid="+id;//DbHelper.NoResultCommand(str);//PageCountBind(1,drNewsCatList.SelectedValue);}}}然后当页的全部id就可以循环输出,删除的时候就只删除第一行
解决方案三:
绑定Repeater的代码是否放在if(!IsPostBack){绑定Repeater代码}中
解决方案四:
准备结贴,自己解决了,原因是在for循环里执行了PageCountBind(1,drNewsCatList.SelectedValue),页面刷新了,checkbox的值就被重新赋值了,吧刷新页面放到for循环外面就可以实现了
解决方案五:
引用2楼的回复:
绑定Repeater的代码是否放在if(!IsPostBack){绑定Repeater代码}中
谢谢你的回答,自己解决了,谢谢