Хобрук: Ваш путь к мастерству в программировании

Как создать отчет в приложении WPF MVVM без обращения к базе данных

Я пытаюсь создать отчет в своем приложении WPF. Я использую Visual Studio 2010, C # и MVVM

Я много исследовал и нашел в сети только статьи, посвященные Crystal Report с использованием базы данных. В моем приложении я не общаюсь с базой данных напрямую. Мы пользуемся веб-сервисом. Он связывается с базой данных и записывает все данные в файлы xml. Мы получаем информацию через хранимые процедуры. Надеюсь, это не проблема.

В любом случае, в одном из моих пользовательских элементов управления у меня есть сетка данных, которая заполнена данными из базы данных. Я храню эти данные с помощью списка и наблюдаемой коллекции. Так что получить данные очень просто. Но теперь я хотел бы экспортировать данные в отчет, который пользователь может распечатать.

Как я уже сказал, я читал отчеты, и все они используют ту или иную форму набора данных или данных. Но, как я уже сказал, мы не используем базу данных напрямую.

Я загрузил SAP Crystal Reports, версию для разработчиков для Microsoft Visual Studio: обновления и загрузки среды выполнения Просто чтобы убедиться, что я могу использовать Crystal Reports.

У меня есть идея, что я должен создать новый пользовательский элемент управления или представление окна и установить текст данных через ViewModel. В этой форме должен быть элемент управления Report Viewer, который будет заполнен. Но я не знаю, через что пройти, могу ли я сделать что-то подобное. Могу ли я отправить List / ObservableCollection с данными, которые я хочу сохранить в форме, и привязать их к элементу управления отчетом? Используя [this] в качестве примера 2, я могу сказать, что находясь в поиске

Или есть другой способ создания отчета без использования базы данных? Обычно я просто хочу создать отчет в моем существующем проекте WPF. Открывается новое окно или пользовательский элемент управления, и здесь загружается средство просмотра отчетов с данными, которые у меня есть в виде сетки. Как этого добиться с помощью WPF и MVVM.

У меня также есть Component One, если кто-нибудь знает, как его использовать. Сам веб-сайт не предлагает отличных руководств по просмотру отчетов.

Пожалуйста, дайте мне знать, если вам что-то еще нужно от меня, и я внесу правки, где смогу


Ответы:


1

Думаю, вы на правильном пути, создав пользовательский элемент управления, использующий сетку данных. Я думаю, что следующее, на что вы хотите обратить внимание при печати каких-то отчетов, - это DocumentPaginator. Используя этот подход, вы можете печатать в файлы .XPS, печатать пользовательский элемент управления прямо на бумаге или / и использовать сторонний конвертер XPS в PDF.

Вот пример для начала!

04.03.2014
  • похоже что-то, что я мог бы использовать. я попробую отформатировать его, чтобы он выглядел как форма 04.03.2014
  • это может быть довольно сложно понять, особенно когда вы начинаете работать с несколькими страницами. По сути, когда вы печатаете с помощью DocumentPaginator, вы точно указываете принтеру, что печатать для каждой страницы. С учетом сказанного вам, возможно, придется рассчитать количество строк на странице, а что нет. Я использовал виртуальный PDF-принтер, чтобы распечатать мои тестовые прогоны в формате .pdf, чтобы не тратить впустую бумагу. 04.03.2014
  • вы, возможно, знаете фрагмент кода предварительного просмотра для печати? Я видел одну, но не могу ее найти. или какой код вы используете для виртуальной программы просмотра pdf? 05.03.2014
  • Использую doPDF v7 как виртуальный принтер. Вы просто выбираете его в диалоговом окне печати при печати, и он будет распечатан в файл. Что касается предварительного просмотра печати, я реализовал свой собственный, который показывает по одной странице (пользовательский элемент управления) за раз. Возможно, вы сможете использовать this чтобы помочь, но моя версия отличается от нее. 05.03.2014

  • 2

    Только начал смотреть на это сам, во-первых, вы можете добавить DataSource на основе вашего контекста EF или вашего веб-сервиса. Затем вы можете использовать встроенный набор инструментов для создания отчетов (который основан на службах отчетов SQL Server (хотя для их размещения это не требуется)).

    Хотя вам потребуется использовать элемент управления хостом Windows Forms :( пошаговое руководство MSDN по размещению отчетов в WPF

    24.10.2014
    Новые материалы

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..

    Обзор 20 основных и современных методов работы с массивами в JavaScript
    Вы знаете их всех? В этом коротком посте я покажу сводку методов, доступных в JavaScript для работы с массивами. Я надеюсь, что вы найдете это полезным! В конце поста вы найдете ссылку на..

    Да, но я чувствую необходимость указать, что это или не единственные два.
    Да, но я чувствую необходимость указать, что это или не единственные два. Обучение с подкреплением (в качестве примера) также является важным.