Проблемы с RadGrid telerik с экспортом в excel
Я добавил следующую строку в мой MasterTableView:
<CommandItemSettings ShowExportToWordButton="true" ShowExportToExcelButton="true" ShowExportToCsvButton="true" />
Но когда я нажимаю на это, появляется загрузка div, а затем данные в сетке обновляются, и ничего больше не происходит. Окно "сохранить файл" отсутствует.
Я что-то пропустил?
Ответы
Ответ 1
Известная проблема, вызванная AJAX (в основном страница должна возвращать поток, а не XttpReuest, используемый для AJAX), поэтому AJAX необходимо отменить на этом пост-обратно.
Вы можете найти дополнительную информацию здесь и загрузить несколько примеров проектов, которые показывают различные способы экспорта 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>
Но я по-прежнему рекомендую вам прочитать эту тему в прикрепленной ссылке
Ответ 2
Добавьте приведенный ниже код перед сеткой:
<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
Ответ 3
Я делаю это так:
У нас есть кнопка под сеткой:
<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 также верно (так что я просто экспортирую все данные).
Прекрасно работает!
Ответ 4
Добавить кнопку для экспорта в 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
Ответ 5
Добавьте ClientEvents-OnRequestStart = "requestStart" в свой RadAjaxPanel
<telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server"
ClientEvents-OnRequestStart="requestStart">
Добавьте script
<script type="text/javascript">
function requestStart(sender, args)
{
if (args.get_eventTarget().indexOf("ExportToExcelButton") >= 0)
{
args.set_enableAjax(false);
}
}
</script>