0

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にはありません。

誰かがこれで私を助けることができますか?

4

1 に答える 1

0

このような問題を抱えている人をたくさん見つけましたが、私を助けることができる答えはほとんどありません。

これまで:http: //forums.asp.net/p/1229438/2216336.aspx#2216336

これは本当に私の問題を解決することができます。私はいくつかのテストを行いました、そしてそれは働きます。彼はなんとかテンプレートフィールドをキャッシュに保存し、Page_Loadで復元しました。頭がいい。

誰かがより良い解決策を見つけたら、ここに投稿してください。これは、壁に頭をぶつけている他の開発者にとって非常に便利です。

于 2009-04-03T13:57:14.057 に答える