Page_LoadとすべてのPostBackにプログラムでテンプレートフィールドが追加されたGridViewがあります(何らかの理由で、これらのフィールドは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ファイルにレンダリングされることです。
この問題は、テンプレートフィールドが各PostBackで値を失うことに関連していると思います。私はそれについて検索し、これらの動的フィールドはPage_LoadではなくPage_Initに追加する必要があると言う人を見つけました。これが正しいかどうかはわかりませんが、間違っていない限り、HttpRequestを介して取得した情報に基づいてこれらのフィールドを作成する必要があります。これはInitにはありません。
誰かがこれで私を助けることができますか?