Вопрос

У меня есть GridView, в котором есть некоторые программные поля шаблона, добавленные к нему при Page_Load и при каждой обратной передаче (потому что по какой-то причине эти поля теряют свое значение при обратной передаче).

Это сработало нормально, так что я больше не думал о проблеме с обратной отправкой.

Теперь я пытаюсь экспортировать этот 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, за исключением полей шаблона, которые оставлены пустыми.

Я думаю, что проблема связана с тем фактом, что поля шаблона теряют свои значения при каждой обратной передаче.Я искал об этом и нашел людей, говорящих, что эти динамические поля должны быть добавлены в Page_Init, а не в Page_Load .Я не уверен, что это правда, тем не менее мне нужно создать эти поля на основе информации, которую я получаю через HttpRequest, которой нет в Init, если я не ошибаюсь.

Кто-нибудь может мне в этом помочь?

Это было полезно?

Решение

Я нашел много людей с подобными проблемами, но очень мало ответов, которые могли бы мне помочь.

До тех пор , пока этот:http://forums.asp.net/p/1229438/2216336.aspx#2216336

Это действительно может решить мою проблему.Я провел кое-какое тестирование, и это работает.Ему удалось сохранить поля шаблона в кэше и восстановить их при загрузке страницы.Умный.

Если кто-то найдет лучшее решение, пожалуйста, разместите его здесь.Это может быть очень полезно для других коллег-разработчиков, которые бьются головой о стену.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top