У меня есть GridView, к которому программно добавлены поля шаблона в Page_Load и в каждом PostBack (поскольку по некоторым причинам эти поля теряют свое значение в PostBack).
Это работало нормально, поэтому я больше не думал о проблеме PostBack.
Теперь я пытаюсь экспортировать этот GridView в Excel. Я использую следующий код:
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, кроме полей Шаблон, которые оставлены пустыми.
Я думаю, что проблема связана с тем, что поля Template теряют свои значения в каждом PostBack. Я искал об этом и нашел людей, которые говорят, что эти динамические поля должны быть добавлены в Page_Init, а не в Page_Load. Я не уверен, что это правда, но мне нужно создать эти поля на основе информации, которую я получаю через HttpRequest, которой нет в Init, если я не ошибаюсь.
Может ли кто-нибудь помочь мне в этом?