下面代码报错,怎么改???????????
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();
}
}
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();
}
}
后面dr没赋值,所以一直为null咯,
你看下,这个穿出来的dr是否为null
空的
代码那里设置断点,按F11进去跟踪,看为什么dr为空。可能是hrsqlhelp.RunProc这个方法里面错了。或者没有读到值。hrsqlhelp.RunProc这个方法里面错了的可能非常大
hrsqlhelp.RunProc("E_xsl", out dr);
RunProc 这个发出来看看?
这个错误的原因就是出现了null的数值。
你查查看dr的值,赋对了就没问题了。