2012-01-17 33 views
11

he añadido a mi línea de folowing MasterTableView:problemas RadGrid Telerik con la exportación a sobresalir

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

Pero cuando hago clic en que, cargando div aparece a continuación, los datos de la parrilla se actualiza y no pasa nada más. No hay una ventana de "guardar archivo".

¿E-mail perdiendo cualquier cosa?

Respuesta

6

Se está problema conocido causado por el AJAX (básicamente la página necesita return stream en lugar de XttpReuest utilizado para AJAX) por lo tanto, es necesario cancelar AJAX en este post-back. Puede encontrar más información here y descargar algunos ejemplos de proyectos que muestran varias formas de exportar radgrid.

PS. La "solución lista" es agregar esto a su código 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> 

Pero todavía te recomiendo leer el tema en el link adjunta

2

Agregue un botón para exportar a excel;

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

runat = "server">

El Código detrás lateral:

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

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

+0

El mismo resultado, no funciona como debería.Hay cargando div por un momento y una grilla renovada. No hay ventana de archivo samve – gruber

16

Añadir el código de abajo antes de la cuadrícula:

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

Para el código detrás de añadir el siguiente uno:

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

    } 
} 

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

+0

Avíseme la salida después de usarlo .. – Niran

3

que hacerlo de esta manera:

Tenemos un botón debajo de la rejilla:

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

Y en el controlador OnClick se llama a la ExportToExcel, a continuación, desactive las cabeceras de respuesta

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

En la parrilla tiene algunas configuraciones de exportación.
Establecí ExportSettings.ExportOnlyData = true, ExportSettings.FileName en un nombre único con datos actuales e IgnorePaging también es verdadero (Así que solo exporto todos los datos).

¡Funciona perfectamente!

2

Añadir la clientEvents-OnRequestStart = "requestStart" a su RadAjaxPanel

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

Añadir el guión

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