Подключение данных
Информация |
В следствие того, что для панелей индикаторов (дашбордов) и отчетов используется одинаковый унифицированный формат шаблона MRT, методы для загрузки шаблона и работы с данными, то в тексте документации будет использоваться слово «отчет».
|
Данные для построения отчета могут быть подключены различными способами. Самый простой – хранить настройки подключения в самом шаблоне отчета. Так же данные можно подключить из кода, это можно сделать при загрузке отчета в действии GetReport.
HomeController.cs |
... public ActionResult GetReport() { DataSet ds = new DataSet(); ds.ReadXml(Server.MapPath("~/Content/Data/Demo.xml"));
StiReport report = new StiReport(); report.Load(Server.MapPath("~/Content/TwoSimpleLists.mrt")); report.Dictionary.Databases.Clear(); report.RegData("Demo", ds);
return StiMvcViewer.GetReportResult(report); } ... |
Данные для отчета можно подключать не только при его загрузке. Например, можно подключить новые данные в момент интерактивных действий во вьювере (применение параметров отчета, сортировка, детализация, сворачивание). Для этого необходимо задать действие Interaction для компонента HTML5 Viewer, а в обработчике действия подключить данные для текущего отчета. Таким же способом можно подключить данные в других действиях вьювера.
Index.cshtml |
... @Html.Stimulsoft().StiMvcViewer("MvcViewer1", new StiMvcViewerOptions() { Actions = { GetReport = "GetReport", ViewerEvent = "ViewerEvent", Interaction = "ViewerInteraction" } }) ... |
HomeController.cs |
... public ActionResult ViewerInteraction() { DataSet data = new DataSet(); data.ReadXml(Server.MapPath("~/Content/Data/Demo.xml"));
StiReport report = StiMvcViewer.GetReportObject(); report.RegData("Demo", data);
return StiMvcViewer.InteractionResult(report); } ... |
При необходимости подключить новые данные только для определенного интерактивного действия вьювера, например, только при применении параметров отчета, можно воспользоваться параметрами вьювера. Параметры вьювера представлены в виде объекта класса StiRequestParams, они передаются при любом запросе на сторону сервера, и содержат все необходимые сведения и состояния клиентской части вьювера. Для определения типа действия вьювера достаточно проверить свойство Action у параметров вьювера.
HomeController.cs |
... public ActionResult ViewerInteraction() { StiRequestParams requestParams = StiMvcViewer.GetRequestParams(); if (requestParams.Action == StiAction.Variables) { DataSet data = new DataSet(); data.ReadXml(Server.MapPath("~/Content/Data/Demo.xml"));
StiReport report = StiMvcViewer.GetReportObject(); report.RegData("Demo", data);
return StiMvcViewer.InteractionResult(report); }
return StiMvcViewer.InteractionResult(); } ... |
SQL источники данных
Параметры подключения к SQL источнику данных, как и к любому другому, можно хранить в самом шаблоне отчета. Если требуется задать параметры подключения из кода перед построением отчета (например, по причине безопасности или в зависимости от авторизованного пользователя), можно воспользоваться приведенным ниже примером.
Также, для SQL источников данных используемых в отчете, можно указать Время ожидания запроса (Query Timeout) в секундах. Значение данного свойства сохраняется в самом шаблоне отчёта для каждого SQL подключения отдельно.
Ниже приведен пример кода, который предоставляет возможность изменить строку соединения для MS SQL, скорректировать запрос, установить время ожидания запроса для уже созданного соединения и источников данных в отчете.
Вы также можете использовать данные для разработки отчетов и дашбордов полученные из OData хранилищ данных. В этом случае, авторизация может быть выполнена с использованием имени, пароля пользователя или с использованием токена. Параметры авторизации указываются в строке соединения к OData хранилищу с использованием разделителя ";".
В таблице ниже представлены шаблоны строк подключения для различных типов источников данных.
|
Данные из XML, JSON, Excel файлов
Подключение к XML и JSON источникам данных можно хранить в шаблоне отчета. Если требуется указать файлы данных из кода, можно воспользоваться приведенным ниже примером.
|