Страница 1 из 1
Отчет с параметрами в MVC Viewer
Добавлено: 16 окт 2013, 19:20
ovseikin
Здравствуйте!
При построение отчетов с параметрами, при нажатии кнопку приминить возможно ли передать на сервере в отчет дополнительные параметры ?
Re: Отчет с параметрами в MVC Viewer
Добавлено: 18 окт 2013, 11:13
Aleksey
Здравствуйте,
Не могли бы более подробно описать свою задачи. Какие параметры вы хотите передавать на сервер?
Спасибо.
Re: Отчет с параметрами в MVC Viewer
Добавлено: 18 окт 2013, 11:30
ovseikin
У меня отчет с параметрами, при нажатии кнопку "применить" формируется отчет на сервере вызывается метод public ActionResult Interaction(){}, вот мне в этом методе нужно в сам отчет в Variables передать дополнительные параметры
Re: Отчет с параметрами в MVC Viewer
Добавлено: 18 окт 2013, 12:08
Vladimir
Здравствуйте,
Для передачи параметров в сам отчёт вы можете использовать следующий код в указанном действии:
Код: Выделить всё
StiReport report = StiMvcViewer.GetReportObject(this.HttpContext);
report["ParameterName"] = 123;
return StiMvcViewer.InteractionResult(this.HttpContext, report);
Спасибо.
Re: Отчет с параметрами в MVC Viewer
Добавлено: 13 янв 2014, 12:17
ovseikin
В некоторых случаях метод StiMvcViewer.GetReportObject(this.HttpContext) возвращает пустое значение, с чем это может быть связанно ?
Re: Отчет с параметрами в MVC Viewer
Добавлено: 13 янв 2014, 17:18
Vladimir
Здравствуйте,
Это может быть связано с тем, что отчёт уже удалён из кэша сервера. Для решения проблемы либо увеличьте время хранения (свойство ServerTimeout), либо загружать отчёт заново.
Спасибо.
Re: Отчет с параметрами в MVC Viewer
Добавлено: 20 фев 2014, 11:00
levkin77
Vladimir писал(а):
Это может быть связано с тем, что отчёт уже удалён из кэша сервера. Для решения проблемы либо увеличьте время хранения (свойство ServerTimeout), либо загружать отчёт заново.
Как правильно решить проявление ситуации с
Код: Выделить всё
public ActionResult Interaction()
{
StiReport report = StiMvcViewer.GetReportObject(this.HttpContext);
if (report == null) // [b]-- ДА report = NULL[/b]
{
??????
см ниже LOAD...
}
return StiMvcViewer.InteractionResult(HttpContext, report);
}
LOAD - правильный порядок действий???
1. RouteValueDictionary routeValues = StiMvcViewer.GetRouteValues(this.HttpContext); -
необходимо знать что мы строили
2. report = new StiReport();
+ загрузка самого отчета по данным routeValues
3. report.Compile();
4. Установка параметров
if (report.Dictionary.Variables.Contains("ReportId"))
{
report["ReportId"] = 1234567654;
}
if (report.CompiledReport.DataSources.Contains("DataSourceMain"))
{
if (report.CompiledReport.DataSources["DataSourceMain"].Parameters.Contains("@Id"))
report.CompiledReport.DataSources["DataSourceMain"].Parameters["@Id"].ParameterValue = documentId;
}
5. return StiMvcViewer.InteractionResult(HttpContext, report);
Если все действия и их порядок правильны - то фактически это тот же код, что и для метода
GetReportSnapshot()? - если нет ->> просьба правильный порядок действий?
Re: Отчет с параметрами в MVC Viewer
Добавлено: 20 фев 2014, 15:22
Vladimir
Здравствуйте,
Да, ваш код должен работать корректно.
При отсутствии отчёта в кэше (или сессии) сервера, MvcViewer запрашивает его заново в действии GetReportSnapshot.
Если Вы загрузили отчёт в действии InteractionResult, то применение параметров отчёта и его построение должно произойти автоматически.
Если Вы используете свои параметры, то их нужно применить к отчёту до построения (как указано в Вашем коде).
Для удобства можно вынести код загрузки отчёта, регистрацию данных и применение параметров в отдельный метод.
Спасибо.
Re: Отчет с параметрами в MVC Viewer
Добавлено: 21 фев 2014, 04:46
levkin77
Спасибо.
Re: Отчет с параметрами в MVC Viewer
Добавлено: 21 фев 2014, 06:42
Andrew
Здравствуйте,
Всегда рады помочь!