Ich habe eine GridView mit 75000 Datensätze. Die Daten werden in wenigen Tagen zunehmen. Ich habe keine Probleme beim Aufrufen der Benutzeroberfläche, da ich Paging verwende. Beim Exportieren in Excel schlagen nun alle Blogs vor, die Seitennummerierung zu entfernen und dann das Gitter erneut zu exportieren. Während dieses Vorgangs schlägt die Datenbank jedoch mit der Ausnahme wegen zu wenig Arbeitsspeicher fehl. Bitte helfen Sie. Ich habe sogar versucht, auf Datatable zu laden und zu einer neuen Gridview neu zu laden.Grid Binding Fehler beim Exportieren
(Hinzugefügt mein Code unten, zur Zeit wird dies mehrere Male nur die letzte Seite im Netz Looping)
try
{
GrdReport.AllowPaging = false;
LoadReportData();
int a = GrdReport.PageIndex;
if (GrdReport.PageCount <= 650)
{
DataTable dt = new DataTable();
for (int i = 0; i < GrdReport.PageCount; i++)
{
GrdReport.PageIndex = i;
//GrdReport.SetPageIndex(a);
if (i == 0)
{
for (int k = 0; k < GrdReport.HeaderRow.Cells.Count; k++)
{
if (GrdReport.HeaderRow.Cells[k].HasControls())
{
if (GrdReport.HeaderRow.Cells[k].Controls[0] is LinkButton)
{
LinkButton headerControl = GrdReport.HeaderRow.Cells[k].Controls[0] as LinkButton;
string headerName = headerControl.Text;
dt.Columns.Add(headerName);
}
}
}
}
foreach (GridViewRow row in GrdReport.Rows)
{
dt.Rows.Add();
for (int j = 0; j < row.Cells.Count; j++)
{
dt.Rows[dt.Rows.Count - 1][j] = row.Cells[j].Text;
}
}
}
int x = dt.Rows.Count;
int y = dt.Columns.Count;
GrdReport.SetPageIndex(a);
Session["New"] = dt;
HttpResponse Response = HttpContext.Current.Response;
Response.Redirect("ExportToExcelHandler.ashx?gv=" + Session["New"], false);
}
else
{
lblErr.Text = "Result exceeds 65000 records. Please modify search criteria to reduce records.";
lblErr.Visible = true;
}
}
Und dies ist der Code in Handler:
public class ExportToExcelHandler : System.Web.UI.Page, IHttpHandler, IRequiresSessionState
{
public new void ProcessRequest(HttpContext context)
{
GridView grid = new GridView();
this.EnableViewState = false;
grid.DataSource = (DataTable)HttpContext.Current.Session["New"];
grid.DataBind();
HttpResponse Response = HttpContext.Current.Response;
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=Results.xls");
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
StringWriter StringWriter = new StringWriter();
HtmlTextWriter HtmlTextWriter = new System.Web.UI.HtmlTextWriter(Response.Output);
grid.RenderControl(HtmlTextWriter);
Response.End();
}
public new bool IsReusable
{
get
{
return false;
}
}
}
Was passiert, wenn Sie nur 1000 Datensätze exportieren, noch abstürzen? – TrevorBrooks
1000 Datensätze exportiert gut. – krrish602
Was verwenden Sie, um nach Excel zu exportieren? Sparen Sie als HTML? –