Я смог использовать 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. Создайте отчет.
Из контекстного меню папки проекта:
- Нажмите «Добавить» -> «Новый элемент ...»
- Выберите набор шаблонов «Отчетность» на левой панели.
- Выберите шаблон «Отчет». Появится дизайн-поверхность для нового отчета.
- Перетащите элементы управления из панели инструментов, чтобы создать отчет. Первый раз
Вы перетащите элемент управления, который требует набора данных (таблица, матрица, Guage,
график, список) Откроется диалоговое окно «Свойства набора данных»:
- Выберите источник данных. В раскрывающемся списке «Источник данных» отображается
пространства имен, в которых могут быть названы источники данных отчета. Выберите один
в котором вы определили свой объект доступа к данным.
- Выберите набор данных: раскрывающийся список «Доступные наборы данных» включает в себя все
соответствующие методы в выбранном пространстве имен источника данных.
метод (ы) объекта доступа к данным, предназначенный для этого, должен быть
среди выборов. Выберите тот, который нужен для этого отчета. Данные
он становится доступным будет отображаться в списке «Поля».
- Настройте элемент управления отчетом, который запустил настройку набора данных.
поля из выбранного набора данных теперь можно использовать в качестве заполнителей для
элементы управления добавлены в отчет.
- Завершите определение отчета, включив и настроив любой
необходимы другие элементы управления отчетами.
III. Создайте веб-форму для отображения отчета.
- После создания веб-формы добавьте элемент управления ScriptManager (из
Раздел расширений AJAX панели инструментов).
- Добавление элемента управления ReportViewer в WebForm (из отчетов
раздел панели инструментов)
- В представлении «Дизайн» веб-формы щелкните элемент управления ReportViewer.
сделать его активным.
- Щелкните смарт-тег , чтобы открыть диалоговое окно «Задачи ReportViewer».
- Откройте раскрывающийся список «Выбрать отчет» и выберите файл RDLC
отчет разработан выше.
- Нажмите «Выбор источников данных», чтобы открыть диалоговое окно «Выбор источников данных».
Набор данных, который вы создали и назвали в части II, должен быть указан как
«Источник данных отчета», и в нем должен быть раскрывающийся список
«Экземпляр источника данных».
- Откройте раскрывающийся список для вашего источника данных и нажмите на выбор, которыйговорит ".
- Это вызывает" Мастер настройки источника данных.Нажмите на значок источника данных «Объект» и, если хотите, присвойте ему более значимый идентификатор, чем предоставленный по умолчанию.
- Откроется диалоговое окно «Настройка источника данных» для нового источника данных объекта, который вы только что выбрали.создано.В раскрывающемся списке «Выберите свой бизнес-объект» вы снова выберете MyProjectWebRole.Models.ReportModels.DataThing
- Нажмите кнопку Далее и выберите вкладку «Выбор».
- Опять же, выберите метод из вашего бизнес-объекта, который предоставит данные, которые будут привязаны к отчету.
Это все .Когда вы переходите к своей веб-форме, она должна запросить веб-службу и заполнить отчет предоставленными данными.
Любые дополнения и исправления к этому наиболее приветствуются!