(解决)导出文件后关闭页面

这里的解决呢,不是真正的关闭,而是采用另一种方式

我的需求是这样的:

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();
    }

 

代码不全,请根据自己实际需要进行修改。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值