问题描述
今天碰到个问题,stringnewName=((TextBox)gvData.Rows[number].Cells[0].Controls[0]).text;intidGot=Convert.ToInt32(((Label)gvData.Rows[number].Cells[9].findControl("id")).Text);在这里,我将第二行里的findControl("id")如果改成Controls[0]就会出问题了,这两句话我感觉差不多啊,为什么第二行的findControl不能换成Controls呢?请高手帮忙解答一下!
解决方案
解决方案二:
findControl("id")尝试查找id满足条件控件Controls[0]根据索引查找控件问题应该是你索引为0的控件不是Label造成,换句话说ID='id'的控件在Controls中其索引不在0
解决方案三:
就算你写intidGot=Convert.ToInt32(((Label)gvData.Rows[number].Cells[8].findControl("id")).Text);intidGot=Convert.ToInt32(((Label)gvData.Rows[number].Cells[4].findControl("id")).Text);intidGot=Convert.ToInt32(((Label)gvData.Rows[number].Cells[0].findControl("id")).Text);随便一个也都是正确的啊。实际上懂FindControl的程序员会写intidGot=Convert.ToInt32(((Label)gvData.Rows[number].findControl("id")).Text);
解决方案四:
怎么我看不懂呢?
解决方案五:
条条大路通罗马。
解决方案六:
引用楼主drumzjh的回复:
findControl("id")如果改成Controls[0]就会出问题了,这两句话我感觉差不多啊
不能靠感觉的你debug的时候跟一下看看这个Control[0]是不是你想找的东西
解决方案七:
Controls[0]不是label吧
解决方案八:
简单的说把一个是控件ID一个是控件的索引位置定义是不一样的