Хорошо, я создаю своего рода центр отчетности для компании, в которой я работаю, а самая простая часть заключалась в создании веб-браузера для файлов, теперь я перехожу к аспекту отчета и начинаю Я интегрирую Crystal Reports.
Я уже получил файлы с веб-сайта SAP для них, но у меня возникла пара проблем,
Во-первых, все примеры, которые я нашел, позволяют вам определить источник данных / базу данных и включить информацию об этом в коде. Это проблема, потому что у нас МНОГО кристаллических отчетов с множеством различных ссылок на базы данных, поэтому я не могу просто использовать один для всех из них. На самом деле, есть сообщения, что мы используем эту ссылку на несколько баз данных одновременно.
Во-вторых, все примеры, которые я нашел, создают впечатление, что для каждого отчета должна быть создана отдельная страница. Моя цель - иметь возможность иметь ссылку на отчет в качестве переменной и иметь одну страницу для всех имеющихся у нас отчетов.
Я посмотрел на все, что смог найти вчера, и не смог найти то, что мне нужно. Мне также интересно, что вообще делает функция ReportClass.Load. Это было в каждом примере, который я мог найти, и я не заметил какой-либо явной разницы в классе отчетов, который у меня был, когда я его использовал.
Во время поиска я нашел ответ, в котором предлагалось создать приложение для веб-форм, которое будет создавать отчеты, а затем использовать I-Frame для его захвата, но я бы хотел этого избежать.
Итак, в обзоре:
1) Мне нужно создать Crystal Reports без ссылки на базу данных
2) Мне нужно, чтобы он был гибким для переменной Report, указав только путь к файлу .rpt
3) Я бы хотел, чтобы это было в одном приложении, в MVC, и избегая IFrames
Большое спасибо за вашу помощь !!
РЕДАКТИРОВАТЬ: Я нашел решение, которое работает для меня. Вместо представления RAZOR я использовал представление ASPX, в котором имеется инструмент просмотра отчетов Crystal Reports. Чтобы сделать его переменным, я использовал ViewBag.
Код контроллера:
[HttpGet]
public ActionResult Viewer(string Path)
{
var sessionID = Session.SessionID;
ViewBag.Path = newPath;
return View();
}
ASPX Посмотреть код:
<% Report.Report.FileName = ViewBag.Path; %>
<CR:CrystalReportViewer ID="Viewer" runat="server" AutoDataBind="True" GroupTreeImagesFolderUrl="" Height="100%" ReportSourceID="Report" ToolPanelWidth="200px" Width="100%" />
<CR:CrystalReportSource ID="Report" runat="server">
<Report></Report>
</CR:CrystalReportSource>