I'm getting a performance issue when I try to export my grid to Excel. The data source has about 67,000 records and the filtered result set has about 12,000 records. Is it normal for the Excel export to run for 20 minutes without showing any results when there are that many records? Is there anything in my code that I could tweak to avoid this issue?
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PinList.aspx.cs" Inherits="PinList" | |
MasterPageFile="~/Admin/Masterpages/AdminPageWithMenu.master" Theme="MillenniumAdmin" | |
Title="PIN List" %> | |
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %> | |
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server"> | |
<script type="text/javascript"> | |
function OpenRadWindowCreateNewPins() | |
{ | |
var oWindow = radopen("Popups/NewPIN.aspx", null); | |
oWindow.op | |
oWindow.SetSize(600, 520); | |
} | |
//Reloads PIN Grid | |
function OnClientClose(radWindow) | |
{ | |
location.reload(); | |
} | |
</script> | |
</asp:Content> | |
<asp:Content ID="Content2" ContentPlaceHolderID="PageTitle" runat="Server"> | |
PIN List | |
</asp:Content> | |
<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> | |
<telerik:RadWindowManager ID="winMgr" Skin="Outlook" Behaviors="Close, Move, Resize" | |
Modal="true" VisibleStatusbar="false" runat="server" Width="520px" Height="450px" | |
OnClientClose="OnClientClose"> | |
</telerik:RadWindowManager> | |
<asp:Label ID="Message" runat="server" EnableViewState="false"></asp:Label> | |
<telerik:RadGrid ID="PinGrid" runat="server" AutoGenerateColumns="false" AllowAutomaticDeletes="false" | |
AllowAutomaticInserts="false" AllowAutomaticUpdates="false" ShowStatusBar="true" | |
AllowMultiRowSelection="false" AllowPaging="true" PageSize="30" OnNeedDataSource="PinGrid_NeedDataSource" | |
OnItemCreated="PinGrid_ItemCreated" AllowFilteringByColumn="true" OnPreRender="PinGrid_PreRender" | |
OnItemCommand="PinGrid_ItemCommand" Width="90%"> | |
<ExportSettings> | |
<Excel Format="ExcelML" /> | |
</ExportSettings> | |
<MasterTableView AllowNaturalSort="false" CommandItemDisplay="Top" DataKeyNames="PINID" | |
AutoGenerateColumns="false" AllowSorting="true"> | |
<PagerStyle Mode="NextPrevAndNumeric"></PagerStyle> | |
<CommandItemTemplate> | |
<asp:LinkButton ID="lnlRebind" runat="server" OnClientClick="javascript:location.reload()" | |
CommandName="RebindGrid" Visible='true'><img class="middle" alt="" src="../Images/Telerik/Refresh.gif" /> Refresh</asp:LinkButton> | |
<asp:HyperLink NavigateUrl="#" ID="GenerateNewPins" runat="server" Visible='<%# NewMillennium.Authorization.UserHasPermission(NewMillennium.FunctionalityName.CreateEditReps) %>' | |
onclick="OpenRadWindowCreateNewPins();return false;"><img class="middle" alt="" src="../Images/Telerik/new.gif" /> | |
Generate New PINs</asp:HyperLink> | |
<asp:LinkButton ID="lnlExportToExcel" runat="server" OnClick="ExportToExcelClick" | |
Visible='true'><img class="middle" alt="" src="../Images/Telerik/excel.gif" /> Export</asp:LinkButton> | |
| |
</CommandItemTemplate> | |
<Columns> | |
<telerik:GridBoundColumn HeaderText="PinID" DataField="PINID" UniqueName="PINID" | |
SortExpression="PINID" ReadOnly="true" Visible="false"> | |
</telerik:GridBoundColumn> | |
<telerik:GridBoundColumn DataField="DateCreated" HeaderText="Date Generated" SortExpression="DateCreated" | |
CurrentFilterFunction="Between" AutoPostBackOnFilter="true" UniqueName="DateCreated" | |
DataFormatString="{0:M/d/yyyy}" AllowFiltering="false"> | |
</telerik:GridBoundColumn> | |
<telerik:GridBoundColumn HeaderText="PIN" CurrentFilterFunction="Contains" AutoPostBackOnFilter="true" | |
DataField="PIN" UniqueName="PIN" SortExpression="PIN" ReadOnly="true" Visible="true"> | |
</telerik:GridBoundColumn> | |
<telerik:GridBoundColumn HeaderText="Program" CurrentFilterFunction="StartsWith" | |
AutoPostBackOnFilter="true" DataField="ProjectName" UniqueName="ProjectName" | |
SortExpression="ProjectName" DataType="System.String" ReadOnly="true" Visible="true"> | |
</telerik:GridBoundColumn> | |
<telerik:GridBoundColumn HeaderText="Rep First Name" CurrentFilterFunction="StartsWith" | |
AutoPostBackOnFilter="true" DataField="RepFirstName" UniqueName="RepFirstName" | |
SortExpression="RepFirstName" DataType="System.String" ReadOnly="true" Visible="true"> | |
</telerik:GridBoundColumn> | |
<telerik:GridBoundColumn HeaderText="Rep Last Name" CurrentFilterFunction="StartsWith" | |
AutoPostBackOnFilter="true" DataField="RepLastName" UniqueName="RepLastName" | |
SortExpression="RepLastName" DataType="System.String" ReadOnly="true" Visible="true"> | |
</telerik:GridBoundColumn> | |
<telerik:GridBoundColumn HeaderText="Territory Name" CurrentFilterFunction="StartsWith" | |
AutoPostBackOnFilter="true" DataField="TerritoryName" UniqueName="TerritoryName" | |
SortExpression="TerritoryName" ReadOnly="true" Visible="true"> | |
</telerik:GridBoundColumn> | |
<telerik:GridBoundColumn HeaderText="Used" AutoPostBackOnFilter="true" DataField="UsedString" | |
UniqueName="Used" SortExpression="UsedString" ReadOnly="true" Visible="true"> | |
</telerik:GridBoundColumn> | |
<telerik:GridBoundColumn DataField="OrderDate" HeaderText="Date Used" SortExpression="OrderDate" | |
CurrentFilterFunction="Between" AutoPostBackOnFilter="true" UniqueName="OrderDate" | |
DataFormatString="{0:M/d/yyyy}" AllowFiltering="false"> | |
</telerik:GridBoundColumn> | |
</Columns> | |
</MasterTableView> | |
</telerik:RadGrid> | |
</asp:Content> | |
using System; | |
using System.Collections; | |
using System.Collections.Generic; | |
using System.Configuration; | |
using System.Data; | |
using System.Data.SqlClient; | |
using System.Web; | |
using System.Web.Security; | |
using System.Web.UI; | |
using System.Web.UI.HtmlControls; | |
using System.Web.UI.WebControls; | |
using NewMillennium; | |
using Telerik.Web.UI; | |
public partial class PinList : MillenniumPage | |
{ | |
protected void Page_Load(object sender, EventArgs e) | |
{ | |
if (!Authorization.UserHasPermission(FunctionalityName.ViewRepList)) FormsAuthentication.RedirectToLoginPage(); | |
Common.SetGridSkin(PinGrid); | |
} | |
protected void PinGrid_PreRender(object sender, EventArgs e) | |
{ | |
} | |
/// <summary> | |
/// | |
/// </summary> | |
protected void PinGrid_NeedDataSource(object source, GridNeedDataSourceEventArgs e) | |
{ | |
PinGrid.DataSource = PinData.GetPinList(); | |
Common.HideExtraFilterOptions(PinGrid); | |
} | |
protected void PinGrid_ItemCreated(object sender, GridItemEventArgs e) | |
{ | |
Common.HideFilterButtonsForNewVersion(PinGrid, e.Item); | |
} | |
protected void ExportToExcelClick(object sender, EventArgs e) | |
{ | |
string filename = "PinExport-" + DateTime.Now.ToLongDateString().Trim().Replace(" ", "-").Replace(",", ""); | |
this.PinGrid.ExportSettings.FileName = filename; | |
this.PinGrid.ExportSettings.OpenInNewWindow = true; | |
this.PinGrid.ExportSettings.ExportOnlyData = true; | |
this.PinGrid.ExportSettings.IgnorePaging = true; | |
foreach (GridItem commandItem in this.PinGrid.MasterTableView.GetItems(GridItemType.CommandItem)) | |
{ | |
commandItem.Visible = false; | |
} | |
this.PinGrid.MasterTableView.ExportToExcel(); | |
} | |
protected void PinGrid_ItemCommand(object sender, GridCommandEventArgs e) | |
{ | |
if (e.CommandName == RadGrid.FilterCommandName && e.Item is GridFilteringItem) | |
{ | |
} | |
} | |
protected void DisplayMessage(string message, string cssClass) | |
{ | |
Message.Text = message; | |
Message.CssClass = cssClass; | |
} | |
} | |