这里的解决呢,不是真正的关闭,而是采用另一种方式
我的需求是这样的:
1.打开一个页面,选择几个选项
2。点击导出,直接导出。
做法:
将要导出的文件都放入新的一个页面里面,
这样在有导出按钮的页面里面放一个隐藏的iframe
然后通过js来控制iframe的src,同时放一个隐藏button
那实现的过程就是,点导出,弹出“请等待”的flash,这样加强界面友好化,
iframe指向真正的导出页面(反正你看不到),只能看到请等待的falsh,
真正的导出页面里面的Page_Load里面就直接导出(或者存放一个按钮,然后通过js来click一下)
并用window.parent.document.all.父页面隐藏按钮id.click();来隐藏请等待flash.
用户看到的就只是请等待,保存!
附代码:
page1.aspx:
<div id="Div1" style="display:none;position:absolute; Left:50px; Top:30px;display:block;background-color:#FFFFFF">
<table border="0" style="height:47%; width: 99%;">
<tr>
<td align="center" valign="middle" style="padding-top:50px;line-height:150%">
<embed src="../images/go.swf" type="application/x-shockwave-flash" id="IMG1" height="25"></embed>
<br />
正在导出请稍后……
</td>
</tr>
</table>
</div>
<input type="button" οnclick="Hidden()" style="display:none;" id="hidden"/>
<script>
function OutPut(url,time,pollute)
{
document.all.Div1.style.display = "block";
document.getElementById("aa").src = url + "?time=" + time + "&pollute=" + pollute;
}
function Hidden()
{
document.all.Div1.style.display = "none";
}
</script>
page1.aspx.cs:
/// <summary>
/// 转到导出页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void BtnOutPut_Click(object sender, EventArgs e)
{
ClientScript.RegisterStartupScript(GetType(), "a", "<script>OutPut('pager2.aspx','" + time + "','" + pollute + "')</script>");
}
page2.aspx:
<script language="javascript" type="text/javascript">
document.getElementById("导出按钮id").click();
window.parent.document.getElementById("hidden").click();
</script>
page2.aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
//绑定
}
/// <summary>
/// 导出
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void BtnOutPut_Click1(object sender, EventArgs e)
{
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.Html32TextWriter htw = new Html32TextWriter(sw);
//导出对象
this.DataListGrid.RenderControl(htw);
//清除缓冲区,设置输出为word
Response.Buffer = true;
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/vnd.doc";
Response.Charset = "utf-8";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("所有站点当月明细.doc", Encoding.UTF8).ToString());
//此处为导出到word中的样式
Response.Write(@"<style>
.GridViewHeader
{
background-color:#6fa1d9;
color:White;
text-align:center;
}
.GridViewBorder
{
border-width:0px;
}
.GridViewRow
{
text-align:center;
height:30px;
background-color:white;
}
.GridViewAlternatingRow
{
background-color:LightBlue;
text-align:center;
height:30px;
}
table
{
border-width;0px;
margin-left:1px;
border-collapse:collapse;
border-color:#000000
}
tr
{
border-width:0px;
border-color:#000000;
}
td,p,div
{
font-size:10.8pt;
border-width:1px;
border-color:#000000;
padding:0;
}
.BorderStyle
{
border-width:0px;
}
.owertitle
{
text-align:center;
background-color:#6fa1d9;
}
</style>");
Response.Write(sw.ToString());
Response.Flush();
Response.Close();
}
代码不全,请根据自己实际需要进行修改。