日期:2014-05-20  浏览次数:20987 次

提示“未将对象引用设置到对象的实例”(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字段。
------解决方案--------------------