Я хочу иметь вспомогательный класс, который может обслуживать запросы с нескольких страниц для вывода содержимого любого вида сетки, чтобы преуспеть.Но если я передаю GridView, он выдает ошибку, что он должен быть внутри тегов "form runat = 'server'", что имеет смысл.Однако есть ли способ сделать это в отдельном классе, который напрямую не связан с какой-либо конкретной страницей?
Вот код:
public class Export
{
public static void ToExcel(GridView control, params string[] headers)
{
HttpResponse context = System.Web.HttpContext.Current.Response;
context.AddHeader("content-disposition", "attachment;filename=Report.xls");
context.ContentType = "application/vnd.ms-excel";
context.Charset = "";
StringWriter stringWriter = new StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);
stringWriter.GetStringBuilder().Append("<img src='C:\\logo.png'/>");
stringWriter.GetStringBuilder().Append("<br />");
stringWriter.GetStringBuilder().Append("<br />");
stringWriter.GetStringBuilder().Append("<br />");
stringWriter.GetStringBuilder().Append("<br />");
stringWriter.GetStringBuilder().Append("<br />");
stringWriter.GetStringBuilder().Append("<br />");
stringWriter.GetStringBuilder().Append("<br />");
stringWriter.GetStringBuilder().Append("<B>");
stringWriter.WriteLine("Usage Report: ");
stringWriter.GetStringBuilder().Append("</B>");
stringWriter.GetStringBuilder().Append("<br>");
stringWriter.GetStringBuilder().Append("<br>");
stringWriter.GetStringBuilder().Append("<table>");
stringWriter.GetStringBuilder().Append("<tr>");
stringWriter.GetStringBuilder().Append("<td colspan=4 bgcolor=Gainsboro align=center>");
stringWriter.GetStringBuilder().Append("<B>");
foreach (string str in headers)
{
stringWriter.Write(str);
stringWriter.GetStringBuilder().Append("<br />");
}
stringWriter.GetStringBuilder().Append("</B>");
stringWriter.GetStringBuilder().Append("</td>");
stringWriter.GetStringBuilder().Append("</tr>");
control.RenderControl(htmlWriter);
stringWriter.GetStringBuilder().Append("</table>");
context.Write(stringWriter.ToString());
context.End();
}
}