Paging and Export all records to csv

3 posts, 0 answers
  1. Alejandro
    Alejandro avatar
    2 posts
    Member since:
    Oct 2015

    Posted 27 Sep Link to this post

    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

  2. Kostadin
    Admin
    Kostadin avatar
    1711 posts

    Posted 30 Sep Link to this post

    Hi Alejandro,

    In order to export all pages you need to set IgnorePging property to true.I examined the provided code and I noticed that you set IgnorePaging on GridExporting event handler but I am afraid this event is fired too late in the page live cycle to apply the property. I would recommend you to set it on ItemCommand even handler when export to CSV command is fired. Please check out the following code snippet.
    protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e)
    {
        if(e.CommandName == RadGrid.ExportToCsvCommandName)
        {
            RadGrid1.ExportSettings.IgnorePaging = true;
        }
    }


    Regards,
    Kostadin
    Telerik by Progress
    Do you need help with upgrading your ASP.NET AJAX, WPF or WinForms projects? Check the Telerik API Analyzer and share your thoughts.
  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. Alejandro
    Alejandro avatar
    2 posts
    Member since:
    Oct 2015

    Posted 30 Sep Link to this post

    That worked! Thank you very much for your help!

    Regards,

    Alejandro

Back to Top