C# HttpContext取消标签中的文本
在我的ASP.NET应用程序中,我有一个简单的btnPullDataIntoCsv_Click方法,它可以将某些内容打印到标签中,从SQL Server表下载数据并推入csv,如:C# HttpContext取消标签中的文本,c#,asp.net,C#,Asp.net,在我的ASP.NET应用程序中,我有一个简单的btnPullDataIntoCsv_Click方法,它可以将某些内容打印到标签中,从SQL Server表下载数据并推入csv,如: protected void btnPullDataIntoCsv_Click(object sender, EventArgs e) { lblUserMessage.Text = String.Empty; PullData p = new PullData();
protected void btnPullDataIntoCsv_Click(object sender, EventArgs e)
{
lblUserMessage.Text = String.Empty;
PullData p = new PullData();
// Print something into label
lblUserMessage.Text = "I'm printing text into label.";
lblUserMessage.ForeColor = System.Drawing.Color.Blue;
lblUserMessage.Font.Bold = true;
// pull the data from sql table into csv
p.pullDataIntoCsv(start, stop);
}
PullData类中的pullDataIntoCsv方法只需从SQL Server表下载数据并将数据推送到csv中
public void pullDataIntoCsv()
{
StringBuilder sb = new StringBuilder();
using (SqlConnection con = new SqlConnection(cs))
{
SqlDataAdapter da = new SqlDataAdapter(@"select * from someTable", con);
da.Fill(dt);
string[] columnNames = dt.Columns.Cast<DataColumn>().
Select(column => column.ColumnName).
ToArray();
sb.AppendLine(string.Join(",", columnNames));
foreach (DataRow row in dt.Rows)
{
string[] fields = row.ItemArray.Select(field => field.ToString()).
ToArray();
sb.AppendLine(string.Join(",", fields));
}
HttpContext context = HttpContext.Current;
context.Response.Write(sb.ToString());
context.Response.ContentType = "text/csv";
context.Response.AddHeader("Content-Disposition", "attachment; filename=someData.csv");
context.Response.End();
}
}
public void pulldataintocvs()
{
StringBuilder sb=新的StringBuilder();
使用(SqlConnection con=newsqlconnection(cs))
{
SqlDataAdapter da=新的SqlDataAdapter(@“从某个表中选择*”,con);
da.填充(dt);
string[]columnNames=dt.Columns.Cast()。
选择(column=>column.ColumnName)。
ToArray();
sb.AppendLine(string.Join(“,”,columnNames));
foreach(数据行中的数据行)
{
string[]fields=row.ItemArray.Select(field=>field.ToString())。
ToArray();
sb.AppendLine(string.Join(“,”字段));
}
HttpContext=HttpContext.Current;
context.Response.Write(sb.ToString());
context.Response.ContentType=“text/csv”;
context.Response.AddHeader(“内容处置”、“附件;文件名=someData.csv”);
context.Response.End();
}
}
不知道为什么,但当我触发btnPullDataIntoCsv\u单击方法时,我看不到标签中的文本。我在这方面很新,所以请你给我一个提示,我做错了什么,或者我的代码中缺少了什么?
lblUserMessage.Text
我如何避免在pulldataintocsv方法中阻塞UI线程?@CodeCaster在这种情况下,我认为Igor的解释更准确。此代码将永远不会更新UI,因为响应将转换为文件下载。只需最少的代码更改,最简单的方法是将单击事件转换为下载功能,然后使用纯javascript或jquery库清除表单上文本框的值。@ADyson-heh,我想我错过了这个问题的ASP.NET部分,谢谢。