2012-01-17 16 views
11

dodałem folowing linię do mojego MasterTableView:problemy RadGrid Telerik z eksportu do Excela

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

Ale gdy kliknę na tym, załadunek div pojawia się, a następnie dane na siatka jest odświeżony i nic się nie dzieje. Nie ma okna "zapisz plik".

Czy brakuje mi czegoś?

Odpowiedz

6

To jest znany problem spowodowany przez AJAX (w zasadzie strona musi powrót do strumienia zamiast XttpReuest używanego dla AJAX), dlatego też AJAX musi zostać anulowany w tym post-back. Możesz znaleźć więcej informacji here i pobrać kilka przykładowych projektów, które pokazują różne sposoby eksportu radgrid.

PS. z „gotowe rozwiązanie” jest dodanie tego do kodu 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> 

Ale i tak polecam do zapoznania się z tematu w załączonym link

2

Dodaj przycisk do eksportu do programu Excel;

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

runat = "server">

na kodzie za 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; 
    } 

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

+0

ten sam rezultat, robi praca jak powinno.Na chwilę ładuje się div i odświeża siatkę. Brak okna pliku samve – gruber

16

Dodaj poniższy kod przed 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> 

Dla kodzie za dodać poniżej jednego:

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

    } 
} 

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

+0

Poinformuj mnie o wyniku po jego użyciu .. – Niran

3

robię to tak:

Mamy przycisk pod siatką:

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

I w obsługi OnClick wywołaniu ExportToExcel, a następnie usuń nagłówki odpowiedzi

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

W Grid masz kilka ustawień eksportu.
Ustawiam ExportSettings.ExportOnlyData = true, ExportSettings.FileName na unikalną nazwę z aktualnymi danymi i IgnorePaging również jest prawdziwa (więc wyeksportowuję wszystkie dane).

Działa idealnie!

2

Dodaj ClientEvents-OnRequestStart = "requestStart" do RadAjaxPanel

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

Dodaj skrypt

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