运行后的结果 this.TextBox1.Text= 222222222222
也就是说 cbox.Checked 始终=false
为什么我明明提交的时候在所对应的checkbox里面打了勾protected void GridView1_DataBound(object sender, EventArgs e)
    {        if (!IsPostBack)
        {            GridView1.DataKeyNames = new string[] { "id" };
            foreach (GridViewRow row in GridView1.Rows)
            {
                CheckBox cbox = (CheckBox)row.FindControl("CheckBox1");
                if (cbox.Checked == true)
                {                    this.TextBox1.Text = GridView1.DataKeys[row.RowIndex].Value.ToString();
                }
                else                    this.TextBox1.Text = "222222222222";
            }
        }
            
        
    }
}

解决方案 »

  1.   

    to ofei(Minco)是设置吗?我是默认的
    to 20011521() 我是取值,取GridView单元的值
      

  2.   

    这个代码只是在Gridview最后一行的checkbox选择有效,LZ再看看
      

  3.   

    还有 if (!IsPostBack){} 中间的语句只在第一个请求时执行.
      

  4.   

    to jjyjjyjjy(骑着蜗牛去旅行)给我改改,我的本意是
    有一个GridView,CheckBox是用模版列放在gridview中的,我想在选择checkbox时,将gridview中某一行,某一列的值取出来,就这么简单。高手告诉我办法?以上都取不出来值
      

  5.   

    protected void Button1_Click(object sender, EventArgs e)
        {
            string str = string.Empty;
            foreach (GridViewRow row in this.GridView1.Rows)
            {
                CheckBox checkbox = row.FindControl("CheckBox1") as CheckBox;
                if (checkbox.Checked)
                {
                    if (string.IsNullOrEmpty(str))
                    {
                        str = row.Cells[0].Text;
                    }
                    else
                    {
                        str = str + "," + row.Cells[0].Text;
                    }            }
            }
            this.TextBox1.Text = str;
        }
    刚刚测试了一下可以的,LZ再看看
      

  6.   

    我改了了一下,this.TextBox1.Text 没有获得任何值
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            string str = string.Empty;
            foreach (GridViewRow row in this.GridView1.Rows)
            {
                CheckBox checkbox = row.FindControl("CheckBox1") as CheckBox;
                if (checkbox.Checked)
                {
                    if (string.IsNullOrEmpty(str))
                    {
                        str = row.Cells[0].Text;
                    }
                    else
                    {
                        str = str + "," + row.Cells[0].Text;
                    }            }
            }
            this.TextBox1.Text = str;
        }
      

  7.   

    你的取值不应该写在RowDataBound事件里
      

  8.   

    to jjyjjyjjy(骑着蜗牛去旅行)
    谢谢你一直关注这个问题,还请你告诉我应写在那个事件中。对不起我刚学VS2005四个月,请多指教
      

  9.   

    我是希望选择CheckBox时,将GridView中字段值传送到TEXTBOX中
      

  10.   

    你的意思是在客户端选择时就传送到textbox中?
      

  11.   

    IsPostBack=true?
    foreach 的循环走进去了?
      

  12.   

    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();
                   
                }
            }
        }
    也取不到值
      

  13.   

    你现在写的全是服务器端代码又没有加入js?客户端的textbox是不可能显示的啊,这个要实现也是可以的,不过比较麻烦点,明天再弄吧.
      

  14.   

    试着把if (!IsPostBack)
    这句写到pageload里,再在里面调用DataBound看看
      

  15.   

    大哥,你前面的代码有问题啊~~只能判断最后一行啊,即使前面付了值也会被后面的覆盖掉你的想法照这个代码来看是没法实现的;你应该考虑取得Check事件,给TextBox赋值
    具体代码我没时间试,对不起了