protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
    {
        for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
        {
            CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
            if (cbox.Checked == true)
            {
                this.TextBox1.Text = GridView1.Rows[i].Cells[2].Text.ToString();
               
            }
        }
    }点击CheckBox选择行时,只是闪了一下,选择不上。this.TextBox1.Text 也获取不了值。
其中第一列是模板列,绑定于ID,第0列是ID列是隐藏的,为什么取不到值。该怎么做才能取到值。

解决方案 »

  1.   

    有datagriditem属性!不是写在checkbox里面的,是写在datagrid的itembound事件里面的!
      

  2.   

    对不起我是GridView,不是datagrid
      

  3.   

    你这样可以取到的,我用过,但是好像是写在rowdatabound类似这样的gridview事件里的,当他一行行绑定的时候,你可以找到这个控件
    CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
      

  4.   

    写在rowdatabound,也取不到值。
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
            {
                CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
                if (cbox.Checked == true)
                {
                    this.TextBox1.Text = GridView1.Rows[i].Cells[2].Text.ToString();
                   
                }
            }
        }
    高手帮忙呀
      

  5.   

    我的理解是,你的CheckBox是用模版列放在gridview中的?然后是不是要点击checkbox执行一个事件??
    可以设置checkbox的commandname为check。然后在gridview的rowcommand事件里作判断
     protected void GridView1_RowCommand(object source, GridViewCommandEventArgs e)
    {
    if(e.CommandName == "check")
    {
       //点击该按钮要执行的操作
    }
    }
      

  6.   

    有一个GridView,CheckBox是用模版列放在gridview中的,我想在选择checkbox时,将gridview中某一行,某一列的值取出来,就这么简单。高手告诉我办法?以上都取不出来值
      

  7.   

    在check事件里面用GridView1.SelectedRow.Cells[int Index]。。不过只能选择你check的那行。。
      

  8.   

    关键是用什么事件,我用protected void GridView1_RowCommand(object source, GridViewCommandEventArgs e)  或protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    即使是我设
    this.TextBox1.Text = “22222”;
    都不显示呀,CSDNR的高手呢
      

  9.   

    把你的代码放在GV里的itemcommand事件里
      

  10.   

    会不会是你在postback的时候重新绑定了?
      

  11.   

    GridView哪 有itemcommand的事件。高手呢,在线等,急
      

  12.   

    protected void CheckBox2_CheckedChanged(object sender, EventArgs e)
        {
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                if (((CheckBox)GridView1.Rows[i].FindControl("CheckBox2")).Checked == true)
                {
                    Response.Write(GridView1.Rows[i].Cells[1].Text);窝写的运行成功
    模版列是checkbox2,autopostback=true
      

  13.   

    http://dotnet.aspx.cc/article/a8efc285-f0b1-4f8f-8e73-2b7d8724a47c/read.aspx
      

  14.   

    你是不有加
    if(!this.IsPostback)
    我才做了这样一个东西,,比这个难多了的.    protected void labdel_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < this.GridView1.Rows.Count; i++)
            {
                CheckBox chksel = (CheckBox)this.GridView1.Rows[i].Cells[5].FindControl("ck");            if (chksel.Checked)
                {                int delid = Convert.ToInt32(((Label)(this.GridView1.Rows[i].Cells[0].FindControl("lab1"))).Text);
                    
                    Del(delid);
                }
            }
                Response.Write("<script>alert('删除成功!');</script>");
                this.GridViewBind();                //删除语句!
         
        }我这是一个删除按键,,写了一个删除方法,,,这样没出现任何问题
      

  15.   

    谢谢楼主,就是不能在page_load()
    那里重新绑定数据
      

  16.   


    RowDataBound事件里的代码不是这么写的吧?不是在里面在去遍历gridview的行。
      

  17.   

    应该是
    CheckBox cbox =(CheckBox)e.Row.FindControl( "CheckBox1 "); 
    我现在的项目里没有用gridview,以前用过的,你试试。
      

  18.   

    你看看你的checkbox在dateview第几列:
    CheckBox checkB=(CheckBox)e.Item.Cells[列编号].Controls[0]
    或者:CheckBox checkB=(CheckBox)e.Item.FindControl("checkbox名")