2012-01-17 14 views
11

ho aggiunto folowing linea al mio MasterTableView:problemi RadGrid Telerik con esportazione in Excel

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

Ma quando clicco su questo, il caricamento di div appare e poi i dati sulla griglia viene aggiornata e non succede nient'altro. Non c'è una finestra "salva file".

Mi manca qualcosa?

risposta

6

E 'problema noto causato dal AJAX (fondamentalmente la pagina deve return stream anziché XttpReuest usato per AJAX), quindi l'AJAX deve essere annullato su questo postback. Puoi trovare ulteriori informazioni here e scaricare alcuni progetti di esempio che mostrano vari modi di esportare Radgrid.

PS. La "soluzione pronta" è quello di aggiungere questo al codice 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> 

Ma ancora vi consiglio di leggere l'argomento in allegato link

2

Aggiungere un pulsante per l'esportazione in Excel;

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

runat = "server">

Il codice dietro laterale:

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

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

+0

Lo stesso risultato, non funziona come dovrebbe.C'è un caricamento div per un momento e una griglia aggiornata. Nessuna finestra di file samve – gruber

16

Aggiungere il codice qui sotto prima che la griglia:

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

Per il codice dietro aggiungere il sotto di un:

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

    } 
} 

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

+0

Fammi sapere l'output dopo averlo utilizzato .. – Niran

3

mi fare in questo modo:

Abbiamo un pulsante sotto la griglia:

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

E nel gestore di Su clic si chiama l'ExportToExcel e quindi deselezionare le intestazioni di risposta

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

Sulla griglia sono presenti alcune impostazioni di esportazione.
I set ExportSettings.ExportOnlyData = true, ExportSettings.FileName con un nome univoco con dati correnti e IgnorePaging è anche true (quindi esporto solo tutti i dati).

Funziona perfettamente!

2

Aggiungere il ClientEvents-OnRequestStart = "requestStart" al tuo RadAjaxPanel

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

Aggiungere lo script

<script type="text/javascript"> 
     function requestStart(sender, args) 
     { 
      if (args.get_eventTarget().indexOf("ExportToExcelButton") >= 0) 
      { 
       args.set_enableAjax(false); 
      } 
     } 
    </script> 
Problemi correlati