我使用.net写了一段导出报表的代码。
当使用单独界面时,能正常打开报表及导出报表;
但当我将此界面嵌入到iframe中时,在导出是直接打开就报错,异常如下:
“由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值原因”
请各位大侠指点一下。
谢谢!!!!
另外,调用的日历js也存在类似的问题。
导出报表代码如下:
DataSet ds = equipMgr.getEquipDefaultEvent(swhere, tableName, taxis);
if (ds.Tables[0].Rows.Count == 0)
{
Page.ClientScript.RegisterStartupScript(GetType(), "toolTip", "<script>alert('导出报表时,请确保数据量不少于1条!')</script>");
return;
}
else
{
if (ds.Tables[0].Rows.Count > 100000)//大于10万行
{
Page.ClientScript.RegisterStartupScript(GetType(), "toolTip", "<script>alert('导出报表时,请确保数据量少于10万条!')</script>");
return;
}
else
{
ds.Tables[0].Columns[0].ColumnName = "编号";
ds.Tables[0].Columns[1].ColumnName = "姓名";
ds.Tables[0].Columns[2].ColumnName = "年龄";
ds.Tables[0].Columns[3].ColumnName = "学校";
ds.Tables[0].Columns[4].ColumnName = "入学时间"; System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter); DataGrid dg = new DataGrid();
//dg.ItemDataBound += new DataGridItemEventHandler(Item_Bound);
dg.DataSource = ds;
dg.DataBind();
dg.RenderControl(oHtmlTextWriter); Response.Clear();
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "";
this.EnableViewState = false;
Response.Write(oStringWriter.ToString()); //HttpContext.Current.ApplicationInstance.CompleteRequest();
//Response.Close();
Response.End();
}
}
当使用单独界面时,能正常打开报表及导出报表;
但当我将此界面嵌入到iframe中时,在导出是直接打开就报错,异常如下:
“由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值原因”
请各位大侠指点一下。
谢谢!!!!
另外,调用的日历js也存在类似的问题。
导出报表代码如下:
DataSet ds = equipMgr.getEquipDefaultEvent(swhere, tableName, taxis);
if (ds.Tables[0].Rows.Count == 0)
{
Page.ClientScript.RegisterStartupScript(GetType(), "toolTip", "<script>alert('导出报表时,请确保数据量不少于1条!')</script>");
return;
}
else
{
if (ds.Tables[0].Rows.Count > 100000)//大于10万行
{
Page.ClientScript.RegisterStartupScript(GetType(), "toolTip", "<script>alert('导出报表时,请确保数据量少于10万条!')</script>");
return;
}
else
{
ds.Tables[0].Columns[0].ColumnName = "编号";
ds.Tables[0].Columns[1].ColumnName = "姓名";
ds.Tables[0].Columns[2].ColumnName = "年龄";
ds.Tables[0].Columns[3].ColumnName = "学校";
ds.Tables[0].Columns[4].ColumnName = "入学时间"; System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter); DataGrid dg = new DataGrid();
//dg.ItemDataBound += new DataGridItemEventHandler(Item_Bound);
dg.DataSource = ds;
dg.DataBind();
dg.RenderControl(oHtmlTextWriter); Response.Clear();
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "";
this.EnableViewState = false;
Response.Write(oStringWriter.ToString()); //HttpContext.Current.ApplicationInstance.CompleteRequest();
//Response.Close();
Response.End();
}
}
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.End();
加
catch(ThreadAbortException)
{}