gridview生成的列表中有两个通过objecdatasource调用业务层方法绑定的数据控件,
一个是checkbox一个是label,
现要通过判断checkbox不同的值来返回Label的Text.
以下是我的方法,能正常编译,但没每次返回的好像只能返回一个值(不知道要怎么遍历).
protected void g_RowCreated(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
       Label lbl = (Label)e.Row.FindControl("lbl");
       CheckBox chkSingle = (CheckBox)e.Row.FindControl("chkSingle");
       if (!chkSingle.Checked)
           lbl.text = "AAAAAA";
       lbl.text = "BBBBBB";
    }
}

解决方案 »

  1.   

      if (!chkSingle.Checked) 
              lbl.text = "AAAAAA"; 
          lbl.text = "BBBBBB"; 
    这样写的话,最后看到的都是 “BBBBB” 了
    你是否是想这样?if (!chkSingle.Checked) 
    {
              lbl.text = "AAAAAA"; 
    }
    else
    {
          lbl.text = "BBBBBB"; 
    }
      

  2.   

    在DataBound事件中试试protected void g_DataBound(object sender, EventArgs e)
    {
        foreach(GridViewDataRow gvdr in g.Rows)
        {
            Label lbl = gvdr.FindControl("lbl") as Label;
            CheckBox chkSingle = gvdr.FindControl("chkSingle") as CheckBox;
            if(lbl != null && chkSingle!=null)
            {
               if (!chkSingle.Checked)
                  lbl.text = "AAAAAA"; 
               lbl.text = "BBBBBB"; 
            }
        }
    }
      

  3.   

    那是不是所有CheckBox的状态都是一样的?
      

  4.   

    还有可能就是CheckBox都是没有选中的,GridView得绑定要放到IsPostBack里面
      

  5.   

    要是为了在绑定的时候判断是否选择了显示不一样的值,在DataItemBind 里面绑定吧。
    要是要实现点的时候自动变化,给CHECKBOX加onclick事件,通过JS找对对应行的文本框
      

  6.   

    已经解决,
    还是应该是放得RowDataBound下.
    开始我也在这个方法下测试了但没有成功,吃完饭后再一测试又通过了.
    应该是与我设置的数据缓存有关.
    散分!