RadGrid telerik出口到excel的问题

gru*_*ber 11 .net c# asp.net telerik

我在我的MasterTableView中添加了以下行:

<CommandItemSettings ShowExportToWordButton="true" ShowExportToExcelButton="true" ShowExportToCsvButton="true" />
Run Code Online (Sandbox Code Playgroud)

但是当我点击它时,会出现加载div,然后刷新网格上的数据,而不会发生其他任何事情.没有"保存文件"窗口.

我错过了什么吗?

小智 16

在Grid之前添加以下代码:

<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>
Run Code Online (Sandbox Code Playgroud)

对于后面的代码添加以下代码:

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();

    }
}
Run Code Online (Sandbox Code Playgroud)

参考:http://demos.telerik.com/aspnet-ajax/grid/examples/generalfeatures/exporting/defaultcs.aspx


Sim*_*imY 7

这是由AJAX引起的已知问题(基本上页面需要返回流而不是用于AJAX的XttpReuest)因此需要在此回发后取消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>
Run Code Online (Sandbox Code Playgroud)

但我仍然建议您阅读附加链接中的主题