gridview是绑定数据库的2张表的一些字段动态生成的,里面加入了checkbox,然后我想通过对checkbox的值checked是否为true来执行一些操作,其实就是如果为ture,我就获取girdview的第一个字段的值,然后在数据库一个表里面update一个字段的数据而已,不过现在问题是点了按钮后没有反应,代码如下。。是什么原因呢??    protected void Page_Load(object sender, EventArgs e)
    {
            DataTable dt = new DataTable();
            dt = new rukuDAO().dingdan();
            GridView1.DataSource = dt;
            GridView1.DataBind();          
       
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string j;
        for (int i = 0; i < GridView1.Rows.Count-1; i++)
        {
            
            CheckBox cb = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
            if (cb.Checked)
            {
                j = GridView1.Rows[i].Cells[0].Text.ToString();
                Modelruku rk = new Modelruku(j);
                new rukuDAO().ruku(rk);
            }
        }    }    protected void CheckBox2_CheckedChanged(object sender, EventArgs e)
    {
        for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
        {
            //建立模板列中CheckBox控件的引用
            CheckBox cb = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
            if (CheckBox2.Checked == true)
            {
                cb.Checked = true;
            }
            else
            {
                cb.Checked = false;
            }
        }
    }

解决方案 »

  1.   


    是不是没有postback啊~你每次点击都是刷新,都重新load
    这些写到前台其实不错,都可以防止后台刷新~
      

  2.   

    protected void Page_Load(object sender, EventArgs e)
      {
      DataTable dt = new DataTable();
      dt = new rukuDAO().dingdan();
      if(!IsPostBack)
      { 

         GridView1.DataSource = dt;
         GridView1.DataBind();   
      }  
      }
      

  3.   


    忘记说了gridview要随着按钮的触发事件随时改变的哦所以应该不用加postback吧?
      

  4.   

    我是说为什么数据没变化,因为我测试了一下根本就进入不了for循环的if语句那里。。
      

  5.   


    你好啊,就是不知道为什么他进不了if语句那里,因为我明明已经在checkbox上勾选了,可是为什么就进入不了if 语句呢?我的方法是在if语句里面的new rukuDAO().ruku(rk);
    很郁闷啊。。
      

  6.   


    现在可以进入循环了。。原来是if语句的判断条件忘记=ture了,对了,为什么我获取不了gridview第一列的值呢?
    难道是我这句话写错了?
    j = GridView1.Rows[i].Cells[0].Text.ToString();
      

  7.   

    gridview是绑定数据库的2张表的一些字段动态生成的,里面加入了checkbox,然后我想通过对checkbox的值checked是否为true来执行一些操作,其实就是如果为ture,我就获取girdview的第一个字段的值,然后在数据库一个表里面update一个字段的数据,因为我update的字段会影响到我gridview显示的内容(效果就是勾选了什么,点击按钮后就会在Gridview上面相应的少那一行),所以要重新绑定一次girdview。接下来说下我的问题,就是我单选一个checkbox时,是可以正确执行的,然后在gridview上,我选择的那一行也会消失掉,但是当我多选几个checkbox后,就不行了,虽然可以执行,但是界面显示只会少一行,而不是少了我多选的那几行。。求解决。代码如下:
    public partial class Buyruku : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {        DataTable dt = new DataTable();
            dt = new rukuDAO().dingdan();
            if (!IsPostBack)
            {    
                
             
                GridView1.DataSource = dt;
                GridView1.DataBind();
                
            }       
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            string BuyId;
            for (int i = 0; i <= GridView1.Rows.Count-1; i++)
            {            CheckBox cb = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
                if ( cb.Checked == true )
                {
                    
                    BuyId = this.GridView1.Rows[i].Cells[1].Text;
                    Modelruku rk = new Modelruku(BuyId);
                    new rukuDAO().ruku(rk);
                    
                    DataTable dt2 = new DataTable();
                    dt2 = new rukuDAO().dingdan();
                    GridView1.DataSource = dt2; //其实我知道是这里数据重新绑定的问题但是我想了半天也知道放在哪里好
                    GridView1.DataBind();
                 }
            }    }