【问题标题】:RadGrid telerik problems with export to excelRadGrid telerik 导出到 excel 的问题
【发布时间】:2012-02-12 00:54:39
【问题描述】:

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

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

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

我错过了什么吗?

【问题讨论】:

    标签: c# asp.net .net telerik


    【解决方案1】:

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

    【讨论】:

    • 同样的结果,不能正常工作。有片刻加载 div 并刷新了网格。没有 samve 文件窗口
    【解决方案2】:

    这是由 AJAX 引起的已知问题(基本上页面需要返回流而不是用于 AJAX 的 XttpReuest),因此需要在此回发时取消 AJAX。 您可以找到更多信息 here 并下载一些示例项目,这些项目展示了导出 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>
    

    但我还是建议你阅读附件link中的主题

    【讨论】:

      【解决方案3】:

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

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

      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

      【讨论】:

        【解决方案4】:

        我是这样做的:

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

        <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(所以我只是导出所有数据)。

        完美运行!

        【讨论】:

        • 我得到一个空白的 Excel 电子表格。而且我发现存储过程被调用了 3 次!
        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 2014-02-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多