C# 带有ITemplate字段的GridView导出到Excel
我有一个GridView,它在页面加载和每次回发时都以编程方式添加了一些模板字段(因为,出于某种原因,这些字段在回发时失去了它们的值) 它工作得很好,所以我不再考虑回发问题 现在我正试图将GridView导出到Excel。我正在使用以下代码:C# 带有ITemplate字段的GridView导出到Excel,c#,asp.net,gridview,postback,export-to-excel,C#,Asp.net,Gridview,Postback,Export To Excel,我有一个GridView,它在页面加载和每次回发时都以编程方式添加了一些模板字段(因为,出于某种原因,这些字段在回发时失去了它们的值) 它工作得很好,所以我不再考虑回发问题 现在我正试图将GridView导出到Excel。我正在使用以下代码: protected void ExportToExcel_Click(object sender, EventArgs e) { string attachment = "attachment; filename=ExcelFile.xls";
protected void ExportToExcel_Click(object sender, EventArgs e)
{
string attachment = "attachment; filename=ExcelFile.xls";
Response.ClearContent();
Response.AddHeader("content-disposition", attachment);
Response.ContentType = "application/vnd.xls";
Response.Charset = "utf-8";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1250");
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
// Create a form to contain the grid
HtmlForm frm = new HtmlForm();
this.gridValores.Parent.Controls.Add(frm);
frm.Attributes["runat"] = "server";
frm.Controls.Add(this.gridView);
frm.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
}
问题是,除了模板字段(保留为空)之外,所有列都呈现到Excel文件中
我认为问题在于模板字段在每次回发时都会失去其值。我搜索了一下,发现有人说这些动态字段应该添加到Page_Init上,而不是Page_Load上。我不确定这是真的,但是我需要根据我通过HttpRequest获得的信息创建这些字段,如果我没有弄错的话,这在Init上是不存在的
有人能帮我吗?我发现很多人都有这样的问题,但能帮我的答案很少 在此之前: 这真的可以解决我的问题。我做了一些测试,效果很好。 他设法将模板字段保存在缓存中,并在页面加载时恢复它们。聪明
如果有人找到更好的解决方案,请在这里发布。它对其他正在碰壁的开发人员非常有用。您应该在Init(覆盖或事件)上创建模板字段。此时请求可用,所有控件的状态都将保留。不需要缓存任何东西。