Создать RDL (C) с источником данных WCF для ASP.NET MVC2 с помощью Visual Studio 2010? - PullRequest
1 голос
/ 28 февраля 2012

У нас есть два приложения на C #, одно из которых предоставляет несколько веб-служб WCF, а другое - веб-приложение MVC 2, потребляющее их.Мы планируем, что веб-приложение будет предоставлять многочисленные отчеты на основе существующих или новых операций с веб-службами, используя WebForms ReportViewer.Нам нужно использовать инструмент конструктора отчетов - тот, который использовался для файлов RDLC, был бы просто идеальным.Мы используем VS 2010 и внедряем его в Azure.

Я потратил пару дней на поиски способа сделать это без особого прогресса.

Кажется, есть два пути кДля этого выполните следующие действия:

  1. Использование ReportViewer в локальном режиме - создавайте RDLC как часть веб-приложения и используйте локальный источник данных, либо XML-потоки из веб-служб, либо объекты, являющиеся частьювеб-приложение (возможно, от клиентов, созданных при добавлении веб-служб в проект в качестве веб-ссылок).

  2. Пусть ReportViewer показывает отчеты с сервера отчетов SSRS.Похоже, RDL могут иметь источники данных XML, в том числе службы WCF.

Первый способ будет проще, тем более что я не уверен, что нам понадобится дополнительная инфраструктура настройкиСервер отчетов для удовлетворения других требований.Но я просто не смог подключиться ни к XML, ни к объектным источникам данных.

Второй способ, по-видимому, связан с рядом проблем в дополнение к добавленной инфраструктуре: я не получил соединение XMLработать еще здесь, но, кажется, немного больше чтения и проб и ошибок должны привести меня туда.Кроме того, я не нашел инструмента Visual Studio 2010, который бы поддерживал этот тип отчетов, - вам нужно создать его в SQL Server Business Intelligence Development Studio.Это разновидность VS 2008. Так что есть некоторая значительная дополнительная работа по настройке этой конфигурации для работы с TFS 2010, чтобы мы могли включать наши отчеты в контроль версий, сборки и развертывание.

(Тогда есть и сложностиинтеграции WebForms в приложение MVC. Но я думаю, что они управляемы.)

Любые предложения для других подходов к этим требованиям будут наиболее ценными.Или, если вы заставили это работать, было бы здорово услышать, как вы это сделали.

1 Ответ

1 голос
/ 05 марта 2012

Я смог использовать ReportViewer в локальном режиме и разумно соответствовать нашим требованиям. Я опишу, как это сделать на тот случай, если у кого-нибудь, кто смотрит на этот вопрос, возникнут похожие проблемы.

Outline:

  • Создание объекта доступа к данным для отчета.
  • Создать отчет (файл RDLC).
  • Создание веб-формы для отображения отчета с использованием ReportViewer
    управление.

Мне потребовалось некоторое время, чтобы понять: есть два этапа создания отчета, которые кажутся очень похожими, но имеют разные цели. При создании файла RDLC существует привязка «времени разработки» к объекту данных, которая позволяет связывать заполнители в элементах управления отчета (таблицы, списки и т. Д.) С элементами данных. Затем, позже, при добавлении ReportViewer в WebForm, существует другая привязка данных, которая соединит отчет с экземпляром объекта данных, из которого можно извлечь данные отчета.

I. Создайте объект доступа к данным.

На шаге II.5 ниже вам нужно будет выбрать пространство имен этого объекта. Здесь мне также потребовалось некоторое время, чтобы понять, что в Visual Studio есть предопределенный набор пространств имен для этого, и вам просто нужно поработать с этим. К счастью, одним из них является пространство имен Models вашего MVC-проекта, которое кажется логичным местом для этого. На самом деле я создал дочернее пространство имен, MyProjectWebRole.Models.ReportModels , что нормально с Visual Studio.

Вот схема моего объекта доступа:

namespace MyProjectWebRole.Models.ReportModels
{
    public class DataThing
    {
        public DataThing()
        {
        }

        public int ThingId{ get; set; }
        public decimal ThingCost { get; set; }
        public DateTime ThingAcquisitionDate { get; set; }
        public string ThingType { get; set; }

        public static IList<DataThing> GetEveryThing()
        {

            ServiceClient client = null;
            ThingsRequest request = null;
            ThingsResponse response = null;
            string errorID = "";

            IList<DataThing> things = new List<DataThing>();

                client = new ServiceClient();
                request = new ThingsRequest();
                response = client.ThingsReport(request);
            }

            foreach (ResponseThing rt in response.Things)
            {
        DataThing theThing = new DataThing();
        theThing.ThingId = rt.Id;
        theThing.ThingCost = rt.Cost;
        theThing.ThingAcquisitionDate = rt.Date;
        theThing.ThingType = rt.Type;
                things.Add(theThing);
            }

            if (client != null) client.Close();
            return things
        }
    }
}

ServiceClient , ThingsRequest , ThingsResponse и ResponseThing определяются, когда вы добавляете ServiceReference к веб-службе, из которой происходят данные.

II. Создайте отчет. Из контекстного меню папки проекта:

  1. Нажмите «Добавить» -> «Новый элемент ...»
  2. Выберите набор шаблонов «Отчетность» на левой панели.
  3. Выберите шаблон «Отчет». Появится дизайн-поверхность для нового отчета.
  4. Перетащите элементы управления из панели инструментов, чтобы создать отчет. Первый раз Вы перетащите элемент управления, который требует набора данных (таблица, матрица, Guage, график, список) Откроется диалоговое окно «Свойства набора данных»:
  5. Выберите источник данных. В раскрывающемся списке «Источник данных» отображается пространства имен, в которых могут быть названы источники данных отчета. Выберите один в котором вы определили свой объект доступа к данным.
  6. Выберите набор данных: раскрывающийся список «Доступные наборы данных» включает в себя все соответствующие методы в выбранном пространстве имен источника данных. метод (ы) объекта доступа к данным, предназначенный для этого, должен быть среди выборов. Выберите тот, который нужен для этого отчета. Данные он становится доступным будет отображаться в списке «Поля».
  7. Настройте элемент управления отчетом, который запустил настройку набора данных. поля из выбранного набора данных теперь можно использовать в качестве заполнителей для элементы управления добавлены в отчет.
  8. Завершите определение отчета, включив и настроив любой необходимы другие элементы управления отчетами.

III. Создайте веб-форму для отображения отчета.

  1. После создания веб-формы добавьте элемент управления ScriptManager (из Раздел расширений AJAX панели инструментов).
  2. Добавление элемента управления ReportViewer в WebForm (из отчетов раздел панели инструментов)
  3. В представлении «Дизайн» веб-формы щелкните элемент управления ReportViewer. сделать его активным.
  4. Щелкните смарт-тег SmartTag, чтобы открыть диалоговое окно «Задачи ReportViewer».
  5. Откройте раскрывающийся список «Выбрать отчет» и выберите файл RDLC отчет разработан выше.
  6. Нажмите «Выбор источников данных», чтобы открыть диалоговое окно «Выбор источников данных». Набор данных, который вы создали и назвали в части II, должен быть указан как «Источник данных отчета», и в нем должен быть раскрывающийся список «Экземпляр источника данных».
  7. Откройте раскрывающийся список для вашего источника данных и нажмите на выбор, которыйговорит ".
  8. Это вызывает" Мастер настройки источника данных.Нажмите на значок источника данных «Объект» и, если хотите, присвойте ему более значимый идентификатор, чем предоставленный по умолчанию.
  9. Откроется диалоговое окно «Настройка источника данных» для нового источника данных объекта, который вы только что выбрали.создано.В раскрывающемся списке «Выберите свой бизнес-объект» вы снова выберете MyProjectWebRole.Models.ReportModels.DataThing
  10. Нажмите кнопку Далее и выберите вкладку «Выбор».
  11. Опять же, выберите метод из вашего бизнес-объекта, который предоставит данные, которые будут привязаны к отчету.

Это все .Когда вы переходите к своей веб-форме, она должна запросить веб-службу и заполнить отчет предоставленными данными.

Любые дополнения и исправления к этому наиболее приветствуются!

...