Выполнение запроса при открытие.

Обсуждение Stimulsoft Reports.WEB
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Выполнение запроса при открытие.

Сообщение HighAley »

Здравствуйте.

А вы кроме удаления вызова метода SetConnectionString добавили строку изменения Connection String?

Спасибо.
Expandel
Сообщения: 5
Зарегистрирован: 24 июл 2015, 08:19

Re: Выполнение запроса при открытие.

Сообщение Expandel »

Aleksey Andreyanov писал(а):Здравствуйте.

А вы кроме удаления вызова метода SetConnectionString добавили строку изменения Connection String?

Спасибо.
Здравствуйте.

Да. Пробовал не изменять Connection String, а просто изменить Request Parameters в значение True, пустая страница
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Выполнение запроса при открытие.

Сообщение HighAley »

Здравствуйте.

Попробуйте сохранить шаблон в действии GetReportSnapshot непосредственно перед передачей его вьюверу.
Если сам не разберётесь что в нём не так, то пришлите его нам для анализа. Также пришлите ваш текущий код.

Спасибо.
Ivan19
Сообщения: 35
Зарегистрирован: 02 фев 2015, 11:51

Re: Выполнение запроса при открытие.

Сообщение Ivan19 »

Aleksey Andreyanov писал(а):Здравствуйте.

Попробуйте сохранить шаблон в действии GetReportSnapshot непосредственно перед передачей его вьюверу.
Если сам не разберётесь что в нём не так, то пришлите его нам для анализа. Также пришлите ваш текущий код.

Спасибо.
Все ровно пустая страница.
Expandel писал(а):

Код: Выделить всё

 public ReportController(ICurrentUserKeeper session)
        {
            StiOptions.Engine.AllowPrepareSqlQueries = false;
        }

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult GetReportSnapshot()
        {
            var routeValues = StiMvcViewer.GetRouteValues(HttpContext);
            var id = 1;
            if (routeValues["id"] != null)
                id = Convert.ToInt32(routeValues["id"]);

            var report = LoadReport(id);
            var connStr = ConfigurationManager.ConnectionStrings["ReportConnection"].ConnectionString;
            SetConnectionString(report, connStr);
            SetParams(report);

            return StiMvcViewer.GetReportSnapshotResult(HttpContext, report);
        }

        public ActionResult ViewerEvent()
        {
            return StiMvcViewer.ViewerEventResult(HttpContext);
        }

        public ActionResult GetReports()
        {
            var reports = LoadReportsFromFile()
                .Select(r => new { r.Id, r.NameRu })
                .OrderBy(ob=>ob.NameRu);

            return Json(reports, JsonRequestBehavior.AllowGet);
        }

        // StiMvcViewer
        public ActionResult PrintReport()
        {
            return StiMvcViewer.PrintReportResult(HttpContext);
        }

        public FileResult ExportReport()
        {
            return StiMvcViewer.ExportReportResult(HttpContext);
        }

        public ActionResult Interaction()
        {
            return StiMvcViewer.InteractionResult(HttpContext);
        }
  
        /// <summary>
        /// Получить список объектов ReportModel содержащих шаблон отчета и его идентификатор из файла
        /// </summary>
        /// <returns>список объектов ReportModel</returns>
        private IEnumerable<ReportModel> LoadReportsFromFile()
        {
            if (_reports != null)
                return _reports;

            _reports = new List<ReportModel>();

            var reportDir = ConfigurationManager.AppSettings["ReportDir"];
            var reportListFile = ConfigurationManager.AppSettings["ReportListFile"];
            var path = Server.MapPath(Path.Combine(reportDir, reportListFile));
            var lines = System.IO.File.ReadAllLines(path);
            foreach (var line in lines)
            {
                var reportInfo = line.Split('?');
                if (reportInfo.Length < 2)
                    continue;

                int key;
                if (!int.TryParse(reportInfo[0], out key))
                    continue;

                var currentReport = _reports.SingleOrDefault(r => r.Id == key);

                if (Convert.ToBoolean(reportInfo[3]))
                {
                    var right = reportInfo[1].Replace(".mrt", "");
                    if (!_authorizer.Check(new[] { right }))
                    {
                        continue;
                    }
                }

                if (currentReport != null)
                {
                    currentReport.Id = key;
                    currentReport.FileName = reportInfo[1];
                    currentReport.NameRu = reportInfo.Length < 3 ? "н/у" : reportInfo[2];
                }
                else
                {
                    _reports.Add(new ReportModel
                    {
                        Id = key,
                        FileName = reportInfo[1],
                        NameRu = reportInfo.Length < 3 ? "н/у" : reportInfo[2]
                    });
                }
            }

            return _reports;
        }

        private StiReport LoadReport(int id)
        {
            var reports = LoadReportsFromFile();
            var reportModel = reports.SingleOrDefault(r => r.Id == id);

            if (reportModel == null)
                return null;

            var report = new StiReport();
            var reportDir = ConfigurationManager.AppSettings["ReportDir"];
            var path = Server.MapPath(Path.Combine(reportDir, reportModel.FileName));
            report.Load(path);

            return report;
        }

        private void SetConnectionString(StiReport report, string connStr)
        {
            report.Dictionary.Databases.Clear();

            var dataBase = new StiSqlDatabase("ReportConnection", connStr);
            report.Dictionary.Databases.Add(dataBase);
            report.Compile();
        }

        private void SetParams(StiReport report)
        {
            var user = _session.GetCurrentUser();
            if (user != null)
                report["CurrentUser"] = user.FullName;
        }
View

Код: Выделить всё

@using Stimulsoft.Report.Mvc;

@Html.Stimulsoft().StiMvcViewer(new StiMvcViewerOptions 
{
    Theme = StiTheme.Office2010,
    ActionGetReportSnapshot = "GetReportSnapshot",
    ActionViewerEvent = "ViewerEvent",
    ActionPrintReport = "PrintReport",
    ActionExportReport = "ExportReport",
    ActionInteraction = "Interaction",
    Localization = " ~/App_Data/Reports/ru.xml",
    ClientRequestTimeout = 1800,
    Server =
    {
        GlobalReportCache = false
    }
})
Report.mrt
(17.89 КБ) 326 скачиваний
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Выполнение запроса при открытие.

Сообщение HighAley »

Здравствуйте.

А вы удалили вызов метода SetConnectionString?
В нём удаляются все подклчения.

Спасибо.
Ivan19
Сообщения: 35
Зарегистрирован: 02 фев 2015, 11:51

Re: Выполнение запроса при открытие.

Сообщение Ivan19 »

Aleksey Andreyanov писал(а):Здравствуйте.

А вы удалили вызов метода SetConnectionString?
В нём удаляются все подклчения.

Спасибо.
Пробовал удалять метод, но в самом отчете были настройки подключения.
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Выполнение запроса при открытие.

Сообщение HighAley »

Здравствуйте, Иван.

В отчёте, который вы нам присылали нету никаких колонок в источнике данных. Также ничего нету на странице. Что вы хотите отобразить, если в шаблоне ничего нет?
Давайте ещё раз. Пропишите в шаблоне необходимое подключение. Проверьте, чтобы оно работало в дизайнере. Отключите код, который изменяет словарь данных.
Уточните ещё момент: у нас вообще ничего не отображается или что-то есть?

Спасибо.
Ivan19
Сообщения: 35
Зарегистрирован: 02 фев 2015, 11:51

Re: Выполнение запроса при открытие.

Сообщение Ivan19 »

Aleksey Andreyanov писал(а):Здравствуйте, Иван.

В отчёте, который вы нам присылали нету никаких колонок в источнике данных. Также ничего нету на странице. Что вы хотите отобразить, если в шаблоне ничего нет?
Давайте ещё раз. Пропишите в шаблоне необходимое подключение. Проверьте, чтобы оно работало в дизайнере. Отключите код, который изменяет словарь данных.
Уточните ещё момент: у нас вообще ничего не отображается или что-то есть?

Спасибо.
Report.mrt
(18.03 КБ) 352 скачивания
В дизайнере работает. Код отключил, отображается пустой лист:
Clip2net_150901162648.png
Clip2net_150901162648.png (28.71 КБ) 4216 просмотров
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Выполнение запроса при открытие.

Сообщение HighAley »

Здравстввуйте.

Уточните, пожалуйста, пустой лист отображается изначально, или после нажатия Применить?

Спасибо.
Ivan19
Сообщения: 35
Зарегистрирован: 02 фев 2015, 11:51

Re: Выполнение запроса при открытие.

Сообщение Ivan19 »

Aleksey Andreyanov писал(а):Здравстввуйте.

Уточните, пожалуйста, пустой лист отображается изначально, или после нажатия Применить?

Спасибо.
Изначально
Ответить