专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > DotNet Exception

System.NullReferenceException: 未将对象引用设置到对象的实例错误?

发布时间:2011-06-26 20:28:58 文章来源:www.iduyao.cn 采编人员:星星草

page_load事件中
if (!Page.IsPostBack)
  {
  ds = new DataSet();
  string path = Server.MapPath("AccpCash.xml");
  ds.ReadXml(path);
  foreach (DataRowView  dr in ds.Tables[0].DefaultView)
  {
  ddltype.Items.Add(dr["name"].ToString());
  }
  ddltype.SelectedIndex = 0;
  }

onclick事件中 

         就报 System.NullReferenceException: 未将对象引用设置到对象的实例错误,
        当运行到:
  DataRow dr = ((DataRow[])ds.Tables[0].Select("name='" + ddltype.SelectedItem.Text + "'"))[0]; 
   

------解决方法--------------------------------------------------------
你了解一下aspx页面的生存周期。
在页面被加载的时候,你在Page_Load中初始化了ds,此时ds是OK的,但当服务器完成整个页面的加载后,页面就会被dispose了,此时你的ds就不存在了。那么当运行ds.Tables时,ds肯定为空了。
你可以用ViewState在客户端保存这个ds

C# code


private DataSet MyDS

{

    get {

        if (ViewState["ds"] != null)

           return (DataSet)ViewState["ds"];

        else

           return null;

    }

    set {

        ViewState["ds"] = value;

    }

}


------解决方法--------------------------------------------------------
if (!Page.IsPostBack)这个去掉,为啥?自己想

    
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: