下面代码报错,怎么改???????????
 public static DataTable  Exsl_total()
        {
            SQLHelper hrsqlhelp = new SQLHelper();
            SqlDataReader dr = null;
            try
            {
                hrsqlhelp.RunProc("E_xsl", out dr);
            }
            catch (Exception ex)
            {
                SystemError.CreateErrorLog(ex.Message);
                throw new Exception(ex.Message, ex);
            }
            DataTable dd = new DataTable();
            if (dr.HasRows)
            { 
            while (dr.Read())----->这里报“未将对象应用设置到对象的实例?”
            {
                DataRow row = dd.NewRow();
                row["number"] = dr["number"].ToString();
                row["E_lb"] = dr["E_lb"].ToString();
                row["E_usern"] = dr["E_usern"].ToString();
                row["E_d1"] = dr["E_d1"].ToString();
                row["E_d2"] = dr["E_d2"].ToString();
                row["E_t"] = dr["E_t"].ToString();
            }
            dr.Close();
            }
            return dd;
       }
 public partial class xsl_view : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Calendar1.EventDateColumnName = "E_d1";
            Calendar1.EventDescriptionColumnName = "E_t";
            Calendar1.EventHeaderColumnName = "E_usern";
            Calendar1.EventSource = GetEvents();
        }
        public DataTable GetEvents()
        {
            return (DataTable)ESQL.Exsl_total();--->这里读取数据表
        }        protected void Calendar1_SelectionChanged(object sender, EventArgs e)
        {
            SelectedDatesCollection theDates = Calendar1.SelectedDates;
            DataTable dtEvents = Calendar1.EventSource;
            DataTable dtSelectedDateEvents = dtEvents.Clone();
            DataRow dr;
            foreach (DataRow drEvent in dtEvents.Rows)
                foreach (DateTime selectedDate in theDates)
                    if ((Convert.ToDateTime(drEvent[Calendar1.EventDateColumnName])).ToShortDateString() == selectedDate.ToShortDateString())
                    {
                        dr = dtSelectedDateEvents.NewRow();
                        dr[Calendar1.EventDateColumnName] = drEvent[Calendar1.EventDateColumnName];
                        dr[Calendar1.EventHeaderColumnName] = drEvent[Calendar1.EventHeaderColumnName];
                        dr[Calendar1.EventDescriptionColumnName] = drEvent[Calendar1.EventDescriptionColumnName];
                        dtSelectedDateEvents.Rows.Add(dr);
                    }
            gvSelectedDateEvents.DataSource = dtSelectedDateEvents;
            gvSelectedDateEvents.DataBind();
        }
    }

解决方案 »

  1.   

    上面 SqlDataReader dr = null;
    后面dr没赋值,所以一直为null咯,
      

  2.   

     hrsqlhelp.RunProc("E_xsl", out dr);
    你看下,这个穿出来的dr是否为null
      

  3.   

    SqlDataReader dr = new SqlDataReader();
      

  4.   

    hrsqlhelp.RunProc("E_xsl", out dr);
    空的
      

  5.   

    嗯,所以你就在hrsqlhelp.RunProc("E_xsl", out dr);
    代码那里设置断点,按F11进去跟踪,看为什么dr为空。可能是hrsqlhelp.RunProc这个方法里面错了。或者没有读到值。hrsqlhelp.RunProc这个方法里面错了的可能非常大
      

  6.   

    hrsqlhelp.RunProc把这个方法贴出来,帮你看看
      

  7.   

    你敢不敢把你代码里面的 
    hrsqlhelp.RunProc("E_xsl", out dr);
    RunProc  这个发出来看看?
      

  8.   

    "未将对象应用设置到对象的实例"
    这个错误的原因就是出现了null的数值。
    你查查看dr的值,赋对了就没问题了。