Страница 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
Здравствуйте,

Всегда рады помочь!