Страница 2 из 3
Re: Выполнение запроса при открытие.
Добавлено: 03 авг 2015, 14:49
HighAley
Здравствуйте.
А вы кроме удаления вызова метода SetConnectionString добавили строку изменения Connection String?
Спасибо.
Re: Выполнение запроса при открытие.
Добавлено: 28 авг 2015, 07:24
Expandel
Aleksey Andreyanov писал(а):Здравствуйте.
А вы кроме удаления вызова метода SetConnectionString добавили строку изменения Connection String?
Спасибо.
Здравствуйте.
Да. Пробовал не изменять Connection String, а просто изменить Request Parameters в значение True, пустая страница
Re: Выполнение запроса при открытие.
Добавлено: 28 авг 2015, 10:52
HighAley
Здравствуйте.
Попробуйте сохранить шаблон в действии GetReportSnapshot непосредственно перед передачей его вьюверу.
Если сам не разберётесь что в нём не так, то пришлите его нам для анализа. Также пришлите ваш текущий код.
Спасибо.
Re: Выполнение запроса при открытие.
Добавлено: 28 авг 2015, 13:20
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
}
})
Re: Выполнение запроса при открытие.
Добавлено: 28 авг 2015, 14:34
HighAley
Здравствуйте.
А вы удалили вызов метода SetConnectionString?
В нём удаляются все подклчения.
Спасибо.
Re: Выполнение запроса при открытие.
Добавлено: 01 сен 2015, 06:33
Ivan19
Aleksey Andreyanov писал(а):Здравствуйте.
А вы удалили вызов метода SetConnectionString?
В нём удаляются все подклчения.
Спасибо.
Пробовал удалять метод, но в самом отчете были настройки подключения.
Re: Выполнение запроса при открытие.
Добавлено: 01 сен 2015, 09:10
HighAley
Здравствуйте, Иван.
В отчёте, который вы нам присылали нету никаких колонок в источнике данных. Также ничего нету на странице. Что вы хотите отобразить, если в шаблоне ничего нет?
Давайте ещё раз. Пропишите в шаблоне необходимое подключение. Проверьте, чтобы оно работало в дизайнере. Отключите код, который изменяет словарь данных.
Уточните ещё момент: у нас вообще ничего не отображается или что-то есть?
Спасибо.
Re: Выполнение запроса при открытие.
Добавлено: 01 сен 2015, 13:27
Ivan19
Aleksey Andreyanov писал(а):Здравствуйте, Иван.
В отчёте, который вы нам присылали нету никаких колонок в источнике данных. Также ничего нету на странице. Что вы хотите отобразить, если в шаблоне ничего нет?
Давайте ещё раз. Пропишите в шаблоне необходимое подключение. Проверьте, чтобы оно работало в дизайнере. Отключите код, который изменяет словарь данных.
Уточните ещё момент: у нас вообще ничего не отображается или что-то есть?
Спасибо.
В дизайнере работает. Код отключил, отображается пустой лист:
- Clip2net_150901162648.png (28.71 КБ) 4211 просмотров
Re: Выполнение запроса при открытие.
Добавлено: 01 сен 2015, 17:20
HighAley
Здравстввуйте.
Уточните, пожалуйста, пустой лист отображается изначально, или после нажатия Применить?
Спасибо.
Re: Выполнение запроса при открытие.
Добавлено: 01 сен 2015, 18:30
Ivan19
Aleksey Andreyanov писал(а):Здравстввуйте.
Уточните, пожалуйста, пустой лист отображается изначально, или после нажатия Применить?
Спасибо.
Изначально