Hello,
What Im trying to do, is setting up a radgrid to use paging, and when the user selects the export to csv option it should export all of the records, not just the current page.
Ive looked into other posts, but ive tried everything and i just cant get it working. Right now it just exports the current page, when i try other things, the paging stops working and the export of all records works.
Here is my aspx:
<%@ Page Title="Nut Runners Data" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="NutRunnersReport.aspx.cs" Inherits="DataServer.Reports.NutRunnersReport" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<link href="../Css/print.css" rel="stylesheet">
<link href="../Css/radGrid.css" rel="stylesheet">
<telerik:RadAjaxLoadingPanel ID="LoadingPanel1" runat="server" EnableAjaxSkinRendering="true" Skin="Black" RenderMode="Mobile" AnimationDuration="500">
</telerik:RadAjaxLoadingPanel>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="RadAjaxManager1_AjaxRequest" DefaultLoadingPanelID="LoadingPanel1">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="StartDate">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadGrid1"/>
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="EndDate">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadGrid1"/>
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<div class="form-horizontal">
<div class="row">
<div class="col-md-12">
<h3>Nut Runners Data</h3>
<hr />
The following nut runners data is between the range of dates selected.
<br />
From
<telerik:RadDatePicker ID="StartDate" runat="server" OnSelectedDateChanged="StartDate_SelectedDateChanged" AutoPostBack="true"></telerik:RadDatePicker>
To
<telerik:RadDatePicker ID="EndDate" runat="server" OnSelectedDateChanged="EndDate_SelectedDateChanged" AutoPostBack="true"></telerik:RadDatePicker>
<br />
</div>
</div>
<div class="row" style="margin-top: 20px;">
<div class="col-md-12">
<telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" OnAjaxRequest="RadAjaxPanel1_AjaxRequest" LoadingPanelID="LoadingPanel1" ClientEvents-OnRequestStart="onRequestStart" >
<telerik:RadGrid ID="RadGrid1" runat="server" Width="100%" OnGridExporting="RadGrid1_GridExporting" OnItemDataBound="RadGrid1_ItemDataBound" OnItemCommand="RadGrid1_ItemCommand" AllowFilteringByColumn="true"
Skin="Office2010Black" GroupPanelPosition="Top" OnNeedDataSource="RadGrid1_NeedDataSource">
<ClientSettings>
<Resizing AllowColumnResize="false" ResizeGridOnColumnResize="false" />
<ClientEvents OnCellSelected="" />
<Selecting AllowRowSelect="true" />
<Scrolling AllowScroll="true" UseStaticHeaders="true" SaveScrollPosition="true" ScrollHeight="500"/>
</ClientSettings>
<MasterTableView AllowAutomaticDeletes="false"
AllowAutomaticInserts="false"
AllowAutomaticUpdates="false"
AllowFilteringByColumn="true"
AllowMultiColumnSorting="true"
AllowPaging="true"
AllowSorting="true"
HorizontalAlign="Center"
ShowHeader="true"
Font-Size="Large"
CommandItemDisplay="Top"
Width="100%"
PageSize="20">
<PagerStyle Position="Bottom"/>
<CommandItemSettings ShowAddNewRecordButton="false" ShowCancelChangesButton="false" ShowExportToCsvButton="true" ShowExportToExcelButton="false" ShowRefreshButton="true" />
</MasterTableView>
</telerik:RadGrid>
</telerik:RadAjaxPanel>
<br />
</div>
</div>
</div>
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
<script src="../Scripts/initialize.js"></script>
<script src="../Scripts/radChart.js"></script>
<script src="../Scripts/radGrid.js"></script>
<script src="../Scripts/radAjaxManager.js"></script>
</telerik:RadCodeBlock>
</asp:Content>
And here is my c#:
using System;
using System.Linq;
using System.Web.UI;
using System.Web.UI.WebControls;
using DataServer.App_Code;
using DataServer.Content.Models;
using Telerik.Web.UI;
using Telerik.Web.UI.GridExcelBuilder;
namespace DataServer.Reports
{
public partial class NutRunnersReport : System.Web.UI.Page
{
public void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e)
{
RadDataGridControl.SetPageSizeForExport(sender, e);
}
public void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridDataItem)
{
GridDataItem dataItem = e.Item as GridDataItem;
TableCell dateCell = dataItem["Date"];
dateCell.Text = Convert.ToDateTime(dateCell.Text).ToString("d");
}
RadDataGridControl.CenterFilterColumn(RadGrid1);
}
~NutRunnersReport()
{
}
public DateTime? StartDateTime
{
get
{
return this.StartDate.SelectedDate;
}
set
{
this.StartDate.SelectedDate = value;
}
}
public DateTime? EndDateTime
{
get
{
return this.EndDate.SelectedDate;
}
set
{
this.EndDate.SelectedDate = value;
}
}
public void EndDate_SelectedDateChanged(object sender,
Telerik.Web.UI.Calendar.SelectedDateChangedEventArgs e)
{
this.GetProductionResults();
}
public void RadAjaxPanel1_AjaxRequest(object sender, Telerik.Web.UI.AjaxRequestEventArgs e)
{
this.GetProductionResults();
}
public void RadAjaxManager1_AjaxRequest(object sender, Telerik.Web.UI.AjaxRequestEventArgs e)
{
this.GetProductionResults();
}
public void Page_PreRender(object sender, EventArgs e)
{
this.EditColumns();
this.RadGrid1.Rebind();
}
public void EditColumns()
{
GridColumn[] columns = this.RadGrid1.MasterTableView.AutoGeneratedColumns;
foreach (GridColumn column in columns)
{
switch (column.UniqueName)
{
case "Date":
column.HeaderStyle.Width = Unit.Pixel(130);
column.FilterControlWidth = Unit.Pixel(90);
column.ItemStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;
break;
case "Shift":
column.HeaderStyle.Width = Unit.Pixel(70);
column.FilterControlWidth = Unit.Pixel(30);
column.ItemStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;
break;
}
column.HeaderStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;
column.HeaderStyle.VerticalAlign = System.Web.UI.WebControls.VerticalAlign.Middle;
//column.ItemStyle.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;
column.ItemStyle.VerticalAlign = System.Web.UI.WebControls.VerticalAlign.Middle;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.StartDateTime = DateTime.Today;
this.EndDateTime = DateTime.Today.AddDays(1);
}
}
protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
this.GetProductionResults();
}
public void RadGrid1_GridExporting(object source, GridExportingArgs e)
{
RadDataGridControl.GridExporting(source, e);
}
protected void StartDate_SelectedDateChanged(object sender,
Telerik.Web.UI.Calendar.SelectedDateChangedEventArgs e)
{
this.GetProductionResults();
}
private void GetProductionResults()
{
this.RadGrid1.DataSource = null;
using (var entities = new NutRunnersEntities())
{
this.RadGrid1.DataSource = entities.p_GetNutRunnersByDate(this.StartDateTime,
this.EndDateTime).ToList();
}
}
}
}
The method SetPageSizeForExport:
internal static void SetPageSizeForExport(object sender, Telerik.Web.UI.GridCommandEventArgs e)
{
var grid = (Telerik.Web.UI.RadGrid)sender;
int count = grid.Items.Count;
if (count == 0)
{
count++;
}
grid.PageSize = count * grid.MasterTableView.PageCount;
}
And the method GridExporting:
internal static void GridExporting(object source, Telerik.Web.UI.GridExportingArgs e)
{
var grid = (Telerik.Web.UI.RadGrid)source;
grid.ExportSettings.IgnorePaging = true;
grid.ExportSettings.ExportOnlyData = false;
grid.ExportSettings.OpenInNewWindow = true;
grid.ExportSettings.HideStructureColumns = false;
grid.MasterTableView.CommandItemDisplay = Telerik.Web.UI.GridCommandItemDisplay.None;
grid.ExportSettings.FileName = string.Format("{0} Exported Grid Data",
(System.Web.HttpContext.Current.Handler as System.Web.UI.Page).Title);
switch (e.ExportType)
{
case Telerik.Web.UI.ExportType.Excel:
grid.ExportSettings.Excel.Format = Telerik.Web.UI.GridExcelExportFormat.Xlsx;
grid.MasterTableView.ExportToExcel();
break;
case Telerik.Web.UI.ExportType.Csv:
grid.MasterTableView.ExportToCSV();
break;
case Telerik.Web.UI.ExportType.Word:
grid.ExportSettings.Word.Format = Telerik.Web.UI.GridWordExportFormat.Html;
grid.MasterTableView.ExportToWord();
break;
case Telerik.Web.UI.ExportType.WordDocx:
grid.ExportSettings.Word.Format = Telerik.Web.UI.GridWordExportFormat.Docx;
grid.MasterTableView.ExportToWord();
break;
case Telerik.Web.UI.ExportType.Pdf:
grid.MasterTableView.ExportToPdf();
break;
}
}
Any suggestion of what im doing wrong?
Sorry for all the mess.
Thanks,
Alex