前几天,发了个同样的问题,暂时解决了,可以实现选中删除,
但是现在的问题是:明明全部选定了,执行删除的时候,只删除第一行的值,下面的checkbox值变成false了
        <ItemTemplate>
            <tr>
                <td align="center">
                    <asp:CheckBox ID="cb_id" CssClass="checkall" runat="server" />
                </td>
                <td align="center">
                    <asp:Label ID="lb_id" runat="server" Text='<%#Eval("Nid")%>'></asp:Label>
                </td>
</ItemTemplate>
repeater外的代码
                <asp:LinkButton ID="lbtnDel" runat="server" OnClientClick="return confirm( '确定要删除这些记录吗? ');"
                    OnClick="lbtnDel_Click">删 除</asp:LinkButton>
 protected void lbtnDel_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < this.rptList.Items.Count; i++)
        {
            CheckBox cb = (CheckBox)rptList.Items[i].FindControl("cb_id");
            int id = Convert.ToInt32(((Label)rptList.Items[i].FindControl("lb_id")).Text);            if (cb.Checked)
            {                string str = "delete from T_News where Nid=" + id;
                DbHelper.NoResultCommand(str);
                PageCountBind(1, drNewsCatList.SelectedValue);
            }
        }
        
    }
点击删除的时候,只删除第一行的值,下面的checkbox值就全部是false了,现在都不想用全选删除了

解决方案 »

  1.   

    补充一点:
    把linkbutton里的代码改成下面的样子
    protected void lbtnDel_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < this.rptList.Items.Count; i++)
            {
                CheckBox cb = (CheckBox)rptList.Items[i].FindControl("cb_id");
                int id = Convert.ToInt32(((Label)rptList.Items[i].FindControl("lb_id")).Text);            if (cb.Checked)
                {                Response.Write(id);
                    //string str = "delete from T_News where Nid=" + id;
                    //DbHelper.NoResultCommand(str);
                    //PageCountBind(1, drNewsCatList.SelectedValue);
                }
            }
            
        }
    然后当页的全部id就可以循环输出,删除的时候就只删除第一行
      

  2.   

    绑定Repeater的代码是否放在if(!IsPostBack){绑定Repeater代码}中
      

  3.   

    准备结贴,自己解决了,原因是在for循环里执行了PageCountBind(1, drNewsCatList.SelectedValue),页面刷新了,checkbox的值就被重新赋值了,吧刷新页面放到for循环外面就可以实现了