当前位置: 代码迷 >> .NET新技术 >> System.NullReferenceException: 未将对象引用设置到对象的实例异常?
  详细解决方案

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

热度:79   发布时间:2016-04-25 01:48:01.0
System.NullReferenceException: 未将对象引用设置到对象的实例错误???
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事件中
  运行到:
  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)这个去掉,为啥?自己想
  相关解决方案