Как установить имя экспорта по умолчанию в Crystal Report Viewer? - PullRequest
1 голос
/ 11 марта 2009

На странице ASP.NET, когда пользователь просматривает отчет из Crystal Report Viewer (CRV), у него есть возможность экспортировать отчет (например, в PDF). Имя файла по умолчанию для экспорта - это идентификатор CRV.

Я хотел бы установить имя по умолчанию, которое будет основано на параметрах отчета. (например, «Продажи за 2008 год»).

Я знаю, что могу добавить ссылку на страницу, которая могла бы, а затем я мог бы кодировать решение, где я генерировал PDF в коде и передавал его в браузер, но я надеялся, что может быть способ сделать это Рождество в Crystal Reports.

Ответы [ 4 ]

3 голосов
/ 04 марта 2010
// You could pass the parameters to the web page 
// where you have theCrystalReportViewer control
protected void Page_Load(object sender, EventArgs e)
{
  string reportId = Request["rid"];
  string reportTitle = Request["rtitle"];

  ReportDocument reportDocument = HttpContext.Current.Session[reportId] as ReportDocument;
  this.CommonCrystalReportViewer.ReportSource = reportDocument;
  this.CommonCrystalReportViewer.DataBind();

  // Set the default export file name for the report.
  this.CommonCrystalReportViewer.ID = reportTitle;
}
0 голосов
/ 18 февраля 2015
protected void Page_Init(object sender, EventArgs e) {
    ...
    // Set the default export file name for the report.
    this.mainReportViewer.ID = reportTitle;
    ...
}

Обязательно изменить reportViewer id в функции Page_Init, иначе не будет работать.

0 голосов
/ 24 февраля 2012

Собственно, был класс ReportExporter, который будет использоваться вместо класса ReportViewer, но он больше не поддерживается. Есть некоторые подобные третьи части.

Я использую этот пример кода:

Получить значение параметров из отчета (если у вас его еще нет из Session, QueryString или где-то еще)

string myParamName="XXX";
object myParamValue;
foreach (ParameterField field in reportDocument.ParameterFields)
            {
               if (string.Compare(field.Name.TrimStart('@'), myParamName, true) == 0)
                    myParamValue= field.CurrentValues;
            }

Требуется экспорт с использованием имени отчета

string myReportName = "sales for " + myParamValue.ToString() + ".pdf";
try
    {
     reportDocument.ExportToHttpResponse( 
                 ExportFormatType.PortableDocFormat
                 ,Response, true, myReportName);
    }
catch (System.Threading.ThreadAbortException)
    {
        //System.Threading.ThreadAbortException is thrown  
        //because, Response.End is called internally in ExportToHttpResponse method:
    }
0 голосов
/ 11 марта 2009

Если вы используете Visual Studio 2008 для создания отчета, вы можете отредактировать созданный ReportClass, добавив свойство DefaultName.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...