日期:2014-05-19  浏览次数:20540 次

ASP.NET 中 按钮 单击事件 访问 GridView控件中的模板字段的问题。。。。。。。。。。。。。
btn_Click事件:

....
for   (int   i   =   0;   i   <   GridView1.Rows.Count;   i++)
{
        TextBox   quantity   =   (TextBox)this.GridView1.Rows[i].FindControl( "txtQuantity ");

        this.Label1.Text   =   quantity.Text;
                       
}

.....

当单击按钮时,出现如下错误:

异常详细信息:   System.NullReferenceException:   未将对象引用设置到对象的实例

错误指向:     this.Label1.Text   =   quantity.Text;     这段代码。

不知是什么原因??

     


------解决方案--------------------
看看TextBox quantity = (TextBox)this.GridView1.Rows[i].FindControl( "txtQuantity ");
这句以后的quantity 的值是不是null
------解决方案--------------------
TextBox quantity = (TextBox)this.GridView1.Rows[i].FindControl( "txtQuantity ");
===========
这里findcontrol出来的为null,就会出现异常
由于用了模板列,在btn_Click事件以前要重新绑定一下数据才能取得到值
------解决方案--------------------
没有判断ROWS的类型吧?
------解决方案--------------------
估计i == 0的时候就会出错

因为这是头,而头只是个字符串而已

所以你进行处理的时候还要进行判断
------解决方案--------------------
wxndiablo(刺客)已经说了。
------解决方案--------------------
不是Rows的类型,是Row的类型。
------解决方案--------------------
if (e.Row.RowType == DataControlRowType.DataRow)
{
}
if (e.Row.RowType == DataControlRowType.Header)
{

}