RadGrid Telerik проблемы с экспортом, чтобы преуспеть - PullRequest
11 голосов
/ 17 января 2012

Я добавил следующую строку в свой MasterTableView:

<CommandItemSettings ShowExportToWordButton="true" ShowExportToExcelButton="true" ShowExportToCsvButton="true" />

Но когда я нажимаю на это, появляется загрузка div, а затем данные в сетке обновляются, и больше ничего не происходит.Окно «сохранить файл» отсутствует.

Я что-то упустил?

Ответы [ 5 ]

16 голосов
/ 19 января 2012

Добавьте приведенный ниже код перед сеткой:

<script type="text/javascript">
        function onRequestStart(sender, args)
        {
            if (args.get_eventTarget().indexOf("ExportToExcelButton") >= 0 ||
                    args.get_eventTarget().indexOf("ExportToWordButton") >= 0 ||
                    args.get_eventTarget().indexOf("ExportToCsvButton") >= 0)
            {
                args.set_enableAjax(false);
            }
        }
    </script>

    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
        <ClientEvents OnRequestStart="onRequestStart" />
        <AjaxSettings>
            <telerik:AjaxSetting AjaxControlID="RadGrid1">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="RadGrid1" />
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
    </telerik:RadAjaxManager>

Для кода ниже добавьте следующий:

protected void RadGrid1_ItemCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
{
    if (e.CommandName == Telerik.Web.UI.RadGrid.ExportToExcelCommandName ||
            e.CommandName == Telerik.Web.UI.RadGrid.ExportToWordCommandName ||
            e.CommandName == Telerik.Web.UI.RadGrid.ExportToPdfCommandName ||
            e.CommandName == Telerik.Web.UI.RadGrid.ExportToCsvCommandName)
    {
        gridResult.ExportSettings.IgnorePaging = true;
        gridResult.ExportSettings.OpenInNewWindow = true;
        if (e.CommandName == Telerik.Web.UI.RadGrid.ExportToExcelCommandName)
            gridResult.MasterTableView.ExportToExcel();
        else if (e.CommandName == Telerik.Web.UI.RadGrid.ExportToWordCommandName)
            gridResult.MasterTableView.ExportToWord();
        else if (e.CommandName == Telerik.Web.UI.RadGrid.ExportToCsvCommandName)
            gridResult.MasterTableView.ExportToCSV();
        else if (e.CommandName == Telerik.Web.UI.RadGrid.ExportToPdfCommandName)
            gridResult.MasterTableView.ExportToPdf();

    }
}

ссылка: http://demos.telerik.com/aspnet-ajax/grid/examples/generalfeatures/exporting/defaultcs.aspx

7 голосов
/ 17 января 2012

Это известная проблема, вызванная AJAX (в основном страница должна возвращать поток, а не XttpReuest, используемый для AJAX), поэтому AJAX необходимо отменить на этом постбеке.Вы можете найти больше информации здесь и загрузить несколько примеров проектов, которые показывают различные способы экспорта radgrid.

PS.«Готовое решение» состоит в том, чтобы добавить это к вашему JS-коду

<script type="text/javascript">
            function mngRequestStarted(ajaxManager, eventArgs)
           {
              if(eventArgs.EventTarget == "mngBtnExcel" || eventArgs.EventTarget == "mngBtnWord")
             {
                eventArgs.EnableAjax = false;
             }
           }
            function pnlRequestStarted(ajaxPanel, eventArgs)
           {
              if(eventArgs.EventTarget == "pnlBtnExcel" || eventArgs.EventTarget == "pnlBtnWord")
             {
                eventArgs.EnableAjax = false;
             }
           }
            function gridRequestStart(grid, eventArgs)
           {
              if((eventArgs.EventTarget.indexOf("gridBtnExcel") != -1) || (eventArgs.EventTarget.indexOf("gridBtnWord") != -1))
             {
                eventArgs.EnableAjax = false;
             }
           }
</script>

Но я все же рекомендую вам прочитать тему в прикрепленной ссылке

3 голосов
/ 19 января 2012

Я делаю это так:

У нас есть кнопка под сеткой:

<asp:Button ID="cmdExportToExcel" runat="server"
        Text="Export to Excel" OnClick="cmdExportToExcel_OnClick" />

И в обработчике OnClick вы вызываете ExportToExcel, а затем очищаете заголовки ответа

protected void cmdExportToExcel_OnClick(object sender, EventArgs e) {
     radGrid.MasterTableView.ExportToExcel();
     Page.Response.ClearHeaders();
     Page.Response.ClearContent();
}

В Grid у вас есть несколько ExportSettings.Я устанавливаю ExportSettings.ExportOnlyData = true, ExportSettings.FileName на уникальное имя с текущими данными, а IgnorePaging также имеет значение true (поэтому я просто экспортирую все данные).

Работает отлично!

2 голосов
/ 09 июля 2013

Добавьте ClientEvents-OnRequestStart = "requestStart" к вашей RadAjaxPanel

<telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" 
    ClientEvents-OnRequestStart="requestStart">

Добавьте сценарий

<script type="text/javascript">
        function requestStart(sender, args)
        {
            if (args.get_eventTarget().indexOf("ExportToExcelButton") >= 0)
            {
                args.set_enableAjax(false);
            }
        }
    </script>
2 голосов
/ 17 января 2012

Добавить кнопку для экспорта в Excel;

<asp:Button ID="Button1" CssClass="button" Width="150px" Text="Export to Excel" OnClick="Button1_Click"

Runat = "сервер">

В коде позади стороны:

protected void Button1_Click(object sender, System.EventArgs e)
    {
        ConfigureExport();
        RadGrid1.MasterTableView.ExportToExcel();
    }

public void ConfigureExport()
    {
        RadGrid1.ExportSettings.ExportOnlyData = true;
        RadGrid1.ExportSettings.IgnorePaging = true;
        RadGrid1.ExportSettings.OpenInNewWindow = true;
    }

Ссылка: http://demos.telerik.com/aspnet-ajax/grid/examples/generalfeatures/exporting/defaultcs.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...