读书人

提示“未将对象引用设置到对象的实例”

发布时间: 2012-03-22 17:43:57 作者: rapoo

提示“未将对象引用设置到对象的实例”(C#),请教原因,谢谢!
在 DataGrid1_UpdateCommand 中:
if(e.Item.ItemType==ListItemType.EditItem)
{
DataRowView r=(DataRowView)e.Item.DataItem;
string id=r[0].ToString();

....


调试时提示:“未将对象引用设置到对象的实例”错误;

而如果在 DataGrid1_ItemDataBound 中却不会错误,请教原因! 谢谢了!


[解决办法]
在执行DataGrid1_UpdateCommand 时,是不能这样访问的,除非你又从新绑定了一次
ItemDataBound事件的执行是在 执行 DataBind()方法时,这时又DataSource
而在执行UpdateCommand等类似的事件处理时,这时的DataSource已经没有了,只能通过DataGrid的ViewState来访问已经展示在页面中的数据。
[解决办法]
e.Item.DataItem已经不存在了,当然会提示错误,
DataSource在ItemDataBound是是存在的,但UpdateCommand是通过PostBack的,这个时候DataSource已经不存在,如果你要使用ID之类的数据,应该先保存下来,例如DataKeyField跟DataKeys配合使用就可以保存ID字段。
[解决办法]

读书人网 >C#

热点推荐