TextBox tb = this.GridView1.Rows[e.RowIndex].Cells[1].Controls[0] as TextBox;
int questionId = Convert.ToInt32(this.GridView1.DataKeys[e.RowIndex].Value);
上面的正确,下面语句出来错误
TextBox txtOption = this.GridView1.Rows[e.RowIndex].Cells[2].Controls[0] as TextBox;
int optionNum= Convert.ToInt32(txtOption.Text);
未将对象引用设置到对象的实例
int questionId = Convert.ToInt32(this.GridView1.DataKeys[e.RowIndex].Value);
上面的正确,下面语句出来错误
TextBox txtOption = this.GridView1.Rows[e.RowIndex].Cells[2].Controls[0] as TextBox;
int optionNum= Convert.ToInt32(txtOption.Text);
未将对象引用设置到对象的实例
解决方案 »
- C# 如何判断将不同的数字添加到集合??
- 一个截取字符串的问题
- 怎样在DateTimePicker的keypress事件中,回车实现年月日焦点转换
- 一个小问题
- 简单循环问题.解决后接贴.....
- 请各位大虾给予帮助。。。走过的路过的也帮忙看看!!!
- 请版主aspcn、saucer、icyer、redbb和ArLi2003、redbb、bitsbird、qiuji务必进入指点,顶者有分
- 大家帮帮我。老板要程序了。 在线等
- 我写了一个服务器控件,但是在使用的时候出现下面的错误?
- 请大家比较WinForm下DataGrid和ListView在做数据显示修改时的优缺点
- datagridview 中列显示顺序的问题
- C#code1
我估计你的错误可能的原因是:
1.你的网格控件里面只有两列,但是你却在第3列(Cells[2])中去取值
2.在第三列里面没有TextBox控件。
你试试
TextBox txtOption = (TextBox)this.GridView1.Rows[e.RowIndex].Cells[2].Controls[0];
如果还是报错,则肯定是原因2.因为使用"as TextBox"进行类型转换的时候,如果不能进行转换,他不会报错,而是返回一个null值,导致你再次调用Text属性是出错。
我的直觉是原因2的可能性更大。
根据你的 Convert.ToInt32后面的内容判断,估计是txtOption为null。
的txtOption中保存的有值吗
建议换用(TextBox)this.GridView1.Rows[e.RowIndex].Cells[2].Controls[0] 并且try ()catch ()下.
我怀疑你的this.GridView1.Rows[e.RowIndex].Cells[2].Controls[0]本身有问题.没引用到实例说明你压根就没转化过去.而且用as 转化是不会报错的.没有的话,就转化个null;
TextBox txtOption =(TextBox) this.GridView1.Rows[e.RowIndex].Cells[2].FindControl[""];
问题应该在这里。。
如果是下一句,那错误应该是转换类型不正确之类的,而不是未将对象引用设置到对象的实例
你可以尝试一下,将下面的
TextBox txtOption = this.GridView1.Rows[e.RowIndex].Cells[2].Controls[0] as TextBox;
改为
TextBox txtOption = new TextBox();
txtOption = this.GridView1.Rows[e.RowIndex].Cells[2].Controls[0] as TextBox;
int optionNum= Convert.ToInt32(txtOption.Text);我看了下两个的对比,没错的那个,你没有使用tb,如果你使用tb估计也会报错。(仅仅是估计,我自己没试过)
如果是我所说的这样的话,那么原因就应该是你使用了还没有实例化的txtbox控件对象,所以导致找不到引用。
跟踪一下txtOption的值是否为null.
我认为就是txtOption为null造成的
一种可能是 没有哪个textbox 另一种就是它没有值
应该像10楼所说的那样:
TextBox txtOption = new TextBox();