C# 类似HTTP的协议允许这样做,但浏览器并不真正支持它们——如果您可以一次发送20个文件,而不是在20个单独的请求中发送文件,这将极大地提高性能)。谢谢您的帮助。你有没有创建一个单独的PleaseWait页面的例子,该页面会定时重定向到实际文件?@user3
C# 类似HTTP的协议允许这样做,但浏览器并不真正支持它们——如果您可以一次发送20个文件,而不是在20个单独的请求中发送文件,这将极大地提高性能)。谢谢您的帮助。你有没有创建一个单独的PleaseWait页面的例子,该页面会定时重定向到实际文件?@user3,c#,excel,C#,Excel,类似HTTP的协议允许这样做,但浏览器并不真正支持它们——如果您可以一次发送20个文件,而不是在20个单独的请求中发送文件,这将极大地提高性能)。谢谢您的帮助。你有没有创建一个单独的PleaseWait页面的例子,该页面会定时重定向到实际文件?@user3370558好吧,你只需做一个响应。从“请等待”页面重定向。您仍然需要将代码分为两页,或者根据查询字符串-getData来决定。aspx可以显示“请稍候”,并重定向到getData.aspx?download=1,它将运行Call,而不是ple
类似HTTP的协议允许这样做,但浏览器并不真正支持它们——如果您可以一次发送20个文件,而不是在20个单独的请求中发送文件,这将极大地提高性能)。谢谢您的帮助。你有没有创建一个单独的PleaseWait页面的例子,该页面会定时重定向到实际文件?@user3370558好吧,你只需做一个
响应。从“请等待”页面重定向
。您仍然需要将代码分为两页,或者根据查询字符串-getData来决定。aspx
可以显示“请稍候”,并重定向到getData.aspx?download=1
,它将运行Call
,而不是plesewait
。谢谢,但是在getData.aspx页面中,我遇到了相同的问题和错误。。。在第50行:Response.AddHeader(“内容处置”)@user3370558中发送HTTP标头后,服务器无法追加标头。您必须运行plesewait
方法或Call
,不能在单个请求中同时运行这两个方法。(另外,请注意,您没有发出有效的XHTML;除非您使用纯HTML,否则您肯定会收到很多验证“警告”)在default.aspx页面中只运行plesewait()并重定向到getData.aspx,在getData.aspx页面中只运行调用().Server无法在第50行中发送HTTP标头后追加标头:Response.AddHeader(“内容处置”,
Line 56: Response.AddHeader("content-disposition",
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
PleaseWait();
Call();
}
protected void Call()
{
strSql = "SELECT * FROM ....... ; ";
SqlCommand cmd = new SqlCommand(strSql);
DataTable dt = GetData(cmd);
GridView GridView1 = new GridView();
GridView1.AllowPaging = false;
GridView1.DataSource = dt;
GridView1.DataBind();
Response.Clear();
Response.Buffer = true;
Response.BufferOutput = true;
Response.ClearHeaders();
Response.AddHeader("content-disposition",
"attachment;filename= "Output.xls");
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
for (int i = 0; i < GridView1.Rows.Count; i++)
{
GridView1.Rows[i].Attributes.Add("class", "textmode");
}
GridView1.RenderControl(hw);
string style = @"<style> .textmode { mso-number-format:\@; } </style>";
Response.Write(style);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
}
protected void PleaseWait()
{
this.Response.Write("<meta http-equiv=X-UA-Compatible content=IE=8>");
this.Response.Write(@"<style type=text/css media=all>");
this.Response.Write(@".loading");
this.Response.Write(@"{");
this.Response.Write(@"text-align: center;");
this.Response.Write(@"padding-top: 30px;");
this.Response.Write(@"border-width: 1px solid #000;");
this.Response.Write(@"width: 300px;");
this.Response.Write(@"height: 100px;");
this.Response.Write(@"-ms-filter: alpha(opacity=90);");
this.Response.Write(@"-ms-opacity: 0.90;");
this.Response.Write(@"border-style: solid;");
this.Response.Write(@"background-color: #FFFFFF;");
this.Response.Write(@"position: absolute;");
this.Response.Write(@"font-family: Trebuchet MS;");
this.Response.Write(@"font-size: small;");
this.Response.Write(@"position: absolute;");
this.Response.Write(@"top: 0;");
this.Response.Write(@"bottom: 0;");
this.Response.Write(@"left: 0;");
this.Response.Write(@"right: 0;");
this.Response.Write(@"margin: auto;");
this.Response.Write(@"display: block;");
this.Response.Write(@"background: url('images/wait01.gif') no-repeat center;");
this.Response.Write(@"}");
this.Response.Write(@"</style>");
this.Response.Write(@"<div id=mydiv class=loading> </div>");
this.Response.Write(@"<script>mydiv.innerText = '';");
this.Response.Write(@"</script>");
this.Response.Write(@"<script language=javascript>;");
this.Response.Write(@"var dots = 0;");
this.Response.Write(@"var dotmax = 10;");
this.Response.Write(@"function ShowWait()");
this.Response.Write(@"{");
this.Response.Write(@"var output;");
this.Response.Write(@"output = 'Wait...';");
this.Response.Write(@"dots++;");
this.Response.Write(@"if(dots>=dotmax)dots=1;");
this.Response.Write(@"for(var x = 0;");
this.Response.Write(@"x < dots;x++)");
this.Response.Write(@"{");
this.Response.Write(@"output += '.';");
this.Response.Write(@"}");
this.Response.Write(@"mydiv.innerText = output;");
this.Response.Write(@"}");
this.Response.Write(@"function StartShowWait()");
this.Response.Write(@"{");
this.Response.Write(@"mydiv.style.visibility = 'visible'; ");
this.Response.Write(@"window.setInterval('ShowWait()',1500);");
this.Response.Write(@"}");
this.Response.Write(@"function HideWait()");
this.Response.Write(@"{");
this.Response.Write(@"mydiv.style.visibility = 'hidden';");
this.Response.Write(@"window.clearInterval();");
this.Response.Write(@"}");
this.Response.Write(@"StartShowWait();");
this.Response.Write(@"</script>");
this.Response.Flush();
Thread.Sleep(500);
}
private DataTable GetData(SqlCommand cmd)
{
DataTable dt = new DataTable();
String strConnString = System.Configuration.ConfigurationManager.
ConnectionStrings["conn"].ConnectionString;
SqlConnection con = new SqlConnection(strConnString);
SqlDataAdapter sda = new SqlDataAdapter();
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
try
{
con.Open();
sda.SelectCommand = cmd;
sda.Fill(dt);
return dt;
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
sda.Dispose();
con.Dispose();
}
}
public override void VerifyRenderingInServerForm(Control control)
{
}
}