Я нашел решение.Всякий раз, когда RadGrid загружается, он вызывает различные события следующим образом:
1. Page OnLoad
m. RadGrid OnLoad
x. NeedDataSource
, и при нажатии кнопки (добавленной вышеописанным способом) события вызываются таким образом
1. Page_OnLoad
m. RadGrid OnLoad
n. btnExport_Click
x. NeedDataSource
(что касается странных серийных номеров, эти события могут иметь другие промежуточные события, но порядок появления правильный), поэтому вся Grid восстанавливается вместе с данными, и, следовательно, команда на exportPdf сбрасывается.Так что ничего не происходит.Интересно, что нет необходимости добавлять одну дополнительную кнопку, Telerik предоставляет свои собственные кнопки для этого.которые также могут быть настроены (путем реализации ITemplate).Вот как теперь генерируются отчеты (хотя и не относятся к исходному вопросу):
[ToolboxData("<{0}:RadGridDP runat=server></{0}:RadGridDP>")]
public class RadGridDP : RadGrid
{
//custom logic
public RadGridDP()
{
this.ItemCreated += new GridItemEventHandler(RadGrid_ItemCreated);
this.Load += new EventHandler(RadGridDP_Load);
this.ItemCommand += new GridCommandEventHandler(RadGrid_ItemCommand);
this.PdfExporting += new OnGridPdfExportingEventHandler(RadGridDP_PdfExporting);
this.GridExporting += new OnGridExportingEventHandler(RadGridDP_GridExporting);
this.ExportSettings.ExportOnlyData = true;
this.ExportSettings.IgnorePaging = true;
// this.ExportSettings.OpenInNewWindow = true;
DoPdfFormatting();
DoExcelFormatting();
}
protected void RadGridDP_PdfExporting(object sender, GridPdfExportingArgs e)
{
e.RawHTML = e.RawHTML.Replace("border=\"1\"", "").Replace("style=\"", "style=\" border:0.5px Solid black; ")
.Replace("<thead>", String.Format("<thead>{0}", TableHeader)).Replace("</tbody>", String.Format("{0}</tbody>", TableFooter));
}
protected void RadGridDP_GridExporting(object sender, GridExportingArgs e)
{
e.ExportOutput = e.ExportOutput.Replace("<thead>", String.Format("<thead>{0}", TableHeader))
.Replace("</tbody>", String.Format("{0}</tbody>", TableFooter));
}
}
, поэтому в основном мне приходилось обрабатывать PdfExporting (для Pdf) и GridExporting (для Excel). Мне приходилось обрабатывать Load, ItemCommand и ItemCreated также.В то время как первый требовался для некоторой условной логики, позднее два требовались для форматирования документа PDF