RadGrid telerik 导出到 Excel 时出现问题

发布于 2024-12-27 12:23:51 字数 259 浏览 2 评论 0原文

我在 MasterTableView 中添加了以下行:

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

但是当我单击该行时,会出现加载 div,然后刷新网格上的数据,并且没有其他反应发生。没有“保存文件”窗口。

我错过了什么吗?

I added folowing line to my MasterTableView:

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

But when I click on that, loading div appears and then data on the grid is refreshed and nothing else happens. There is no "save file" window.

Am I missing anything ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

客…行舟 2025-01-03 12:23:51

在网格之前添加以下代码:

<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

Add the below code before the 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>

For the code behind add the below one:

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

    }
}

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

思念满溢 2025-01-03 12:23:51

这是由 AJAX 引起的已知问题(基本上页面需要返回流而不是用于 AJAX 的 XttpReuest),因此需要在此回发上取消 AJAX。
您可以找到更多信息 此处并下载一些示例项目,这些项目展示了导出 radgrid 的各种方式。

附言。
“现成的解决方案”是将其添加到您的 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>

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

It is known issue caused by the AJAX (basically the page needs to return stream rather than XttpReuest used for AJAX) therefore tha AJAX need to be canceled on this post-back.
You can find more info here and download few sample projects that show various way of exporting radgrid.

PS.
The "ready solution" is to add this to your JS code

<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>

But I still recommend you to read the topic in the attached link

小兔几 2025-01-03 12:23:51

我这样做:

我们在网格下有一个按钮:

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

在网格上,您有一些 ExportSettings。
我将 ExportSettings.ExportOnlyData = true、ExportSettings.FileName 设置为包含当前数据的唯一名称,并且 IgnorePaging 也设置为 true(所以我只导出所有数据)。

完美运作!

I do it like this:

We have a button under the grid:

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

And in the OnClick handler you call the ExportToExcel, and then clear the response headers

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

On the Grid you have some ExportSettings.
I set ExportSettings.ExportOnlyData = true, ExportSettings.FileName to a unique name with current data and IgnorePaging is also true (So i just export all the data).

Works perfectly!

溺孤伤于心 2025-01-03 12:23:51

添加导出到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

Add a button for exporting to excel;

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

runat="server">

On Code behind Side:

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;
    }

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

唯憾梦倾城 2025-01-03 12:23:51

将 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>

Add the ClientEvents-OnRequestStart="requestStart" to your RadAjaxPanel

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

Add the script

<script type="text/javascript">
        function requestStart(sender, args)
        {
            if (args.get_eventTarget().indexOf("ExportToExcelButton") >= 0)
            {
                args.set_enableAjax(false);
            }
        }
    </script>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文