我在pageload的时候动态生成了一个gridview,数据源是一个datatable
然后在gridview的  GridView1_RowDataBound 里动态生成了checkbox
CheckBox cb = new CheckBox();
            cb.ID = "cb";
            cb.ToolTip = e.Row.Cells[1].Text;
            cb.AutoPostBack = true;
            e.Row.Cells[0].Controls.Add(cb);
            cb.CheckedChanged += new EventHandler(this.cbx_CheckedChanged); protected void cbx_CheckedChanged(object sender, EventArgs e)
    {
        int checknum = 0;
        foreach (GridViewRow GVR in GridView1.Rows)
        {
            CheckBox cb = ((CheckBox)GVR.Cells[0].FindControl("cb"));
            if (cb.Checked == true)
            {
                ListBox1.Items.Add(new ListItem(cb.ToolTip));
                checknum += 1;
            }
            Label2.Text = checknum.ToString();        }
    }每次点一个checkbox的时候,label2会变成当前选中的checkbox的个数,但奇怪的是每次取消最后一个选中的 checkbox的社会 label2显示的还是 1  应该是0才对的。

解决方案 »

  1.   

    protected void cbx_CheckedChanged(object sender, EventArgs e) 
        { 
            int checknum = 0; 
            foreach (GridViewRow GVR in GridView1.Rows) 
            { 
                CheckBox cb = ((CheckBox)GVR.Cells[0].FindControl("cb")); 
                if (cb.Checked == true) 
                { 
                    ListBox1.Items.Add(new ListItem(cb.ToolTip)); 
                    checknum += 1; 
                } 
                 if (cb.Checked == false) 
                { 
                                   checknum -= 1; 
                }             Label2.Text = checknum.ToString();         } 
        } 
      

  2.   

    LZ把这个全搞懂了,就是高手了:
    http://blog.csdn.net/21aspnet/archive/2007/03/25/1540301.aspx
      

  3.   

    用了 chen_ya_ping  的方法,有4条记录时,选中1条 结果显示 -2  两条是0 三条是2 四条是4
      

  4.   

    这个是可以处理的,但还是那个问题,为什么在取消最后一个checkbox的checked状态的时候,数字不会变化