今天碰到个问题,
string newName = ((TextBox)gvData.Rows[number].Cells[0].Controls[0]).text;
int idGot = Convert.ToInt32(((Label)gvData.Rows[number].Cells[9].findControl("id")).Text);
在这里,我将第二行里的findControl("id")如果改成Controls[0]就会出问题了,这两句话我感觉差不多啊,为什么第二行的findControl不能换成Controls呢?请高手帮忙解答一下!

解决方案 »

  1.   

    findControl("id") 尝试查找id满足条件控件
    Controls[0] 根据索引查找控件问题应该是你 索引为0的控件不是Label造成,换句话说ID='id'的控件在Controls中其索引不在0
      

  2.   

    就算你写 
       int idGot = Convert.ToInt32(((Label)gvData.Rows[number].Cells[8].findControl("id")).Text);
       int idGot = Convert.ToInt32(((Label)gvData.Rows[number].Cells[4].findControl("id")).Text);
       int idGot = Convert.ToInt32(((Label)gvData.Rows[number].Cells[0].findControl("id")).Text);
    随便一个也都是正确的啊。实际上懂FindControl的程序员会写
       int idGot = Convert.ToInt32(((Label)gvData.Rows[number].findControl("id")).Text);
      

  3.   

    不能靠感觉的  你debug的时候 跟一下 看看这个Control[0]是不是你想找的东西