私はGridViewをいくつか持っていますが、何らかの理由でこれらのフィールドがPostBackの値を失うため、Page_Loadと各PostBackにテンプレートフィールドが追加されています。GridView with ITemplateフィールドがExcelにエクスポートされます
これはうまくいきましたので、私は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_LoadではなくPage_Initに追加する必要があると人々に言っていました。私はこれが本当であるかどうかはわかりませんが、HttpRequestを介して取得した情報に基づいてフィールドを作成する必要があります。
誰かが私を助けることができますか?
Init(上書きまたはイベント)にテンプレートフィールドを作成する必要があります。リクエストはその時点で利用可能であり、すべてのコントロールの状態は保持されます。何もキャッシュする必要はありません。 – Ruslan