Проблемы с установкой источника данных RDLC в Object
Справочная информация:
мне было поручено преобразовать приложение базы данных Access в ASP.Net C# MVC. Это мое первое приложение MVC.
есть 10 отчетов, которые необходимо преобразовать. Мы используем файлы RDLC и reportviewer. Я использую Visual Studio 2010 со всеми последними исправлениями. Мы подключаемся к базе данных SQL Server, которая была заполнена существующей базой данных Access, поэтому структура таблицы в значительной степени установлена в камне, или мы должны попытаться преобразовать данные за 10 лет.
Я закончил все отчеты, кроме двух. Окончательные отчеты требуют дополнительной обработки, а не просто отображения данных из базы данных. Самый простой способ сделать это-создать объект C# и выполнить всю обработку на стороне сервера, а затем использовать RDLC для отображения результатов.
вопрос
проблема в том, что Visual Studio не распознает объекты, которые я создал как потенциальные источники. Каждый раз, когда я пытаюсь "добавить набор данных", он вызывает "мастер настройки источника данных" и предлагает только базу данных SQL Server в качестве возможного подключения к данным. Я знаю, что существует экран, который позволяет выбрать объект в качестве набора данных, но я никогда не вижу этот экран.
вот объекты (функции обработки удалены для ясности):
public class TurnAroundVal
{
// Registration Package information
public string dataType { get; set; }
// Calculated totals; values only set through constructor or calculation function
public int packageCount { get; private set; }
public int dayCount { get; set; }
public double avgTurnAround { get; private set; }
public int upperRange { get; private set; }
public int lowerRange { get; private set; }
}
public class TurnAroundVals
{
// Public Variables
public IEnumerable<TurnAroundVal> TurnArounds { get; private set; }
public DatePass dates { get; set; }
public int pkgTotal { get; private set; }
public double dayTotal { get; private set; }
public double avgAllTurnArounds { get; private set; }
}
Я также хотел бы использовать IEnumerable "TurnAroundVal" в качестве источника данных и просто передать даты, int и удваивается в качестве параметров. И то и другое сработает.
вопрос
есть ли параметр в Visual Studio 2010, который мне не хватает, чтобы позволить конструктору RDLC видеть созданные мной объекты? Я ошибаюсь, даже думая, что это будет работать с классами, которые я определил?
ответ
все приведенные предложения были полезны, но в конечном счете то, что заставило его работать для меня, было создать временный не-веб-проект в то же решение и создать RDLC там. Когда я пошел добавить набор данных, он показывает "объекты" в качестве опции. Вы должны добавить ссылку на свой веб-проект, чтобы ваши объекты были видны, но затем вы можете выбрать тот, который хотите, и использовать его в RDLC. После этого вы можете просто перетащить файл RDLC в свой веб-проект, удалить временный проект, и вы можете идти. Просто помните, что вы должны добавить источники данных вручную в код, и они должны быть названы так же, как вы указали в RDLC.
4 ответов
- убедитесь, что классы находятся в том же пространстве имен, что и приложение.
- попробуйте создать приложение перед созданием отчета
- запустите мастер отчетов. В разделе DataSouce выберите имя веб-приложения.
- В разделе доступные наборы данных вы должны увидеть, что Visual Studio интерпретирует как ваш "метод выбора". Если все хорошо, это должно быть поворотным моментом.
вам может потребоваться поместить файл класса в App_Data или папку app_code, но я не уверен.
это также может помочь.
http://msdn.microsoft.com/en-us/library/ms251692%28v=vs.100%29.aspx
установите объекты под тем же пространством имен, но в другом проекте, который вы затем ссылаетесь на свой проект пользовательского интерфейса.
также попробуйте реализации INotifyPropertyChanged
.
Visual Studio не распознает класс при использовании только открытых членов. Когда вы используете getter и setter вместо этого, вы можете видеть свой класс при выборе источника данных.
в Visual Studio есть другие мастера, которые не работают с общедоступными членами.
Ура, Маркус
Я только что столкнулся с этой же проблемой при попытке создать отчеты RDLC в ASP.NET проект MVC в Visual Studio 2017, поэтому я добавляю это как отдельный ответ, чтобы прояснить, что это все еще проблема в январе 2018 года.
мое решение состояло из проекта библиотеки C# и проекта клиента MVC.
добавление отчетов (выбрав в Добавить новый элемент, а затем выбрав элемент мастера отчетов) в проекте библиотеки C# выводит отчет Мастер с мастером настройки источника данных (где я могу выбрать, Использовать ли базу данных, службу или объект в качестве источника данных) модально поверх него:
тогда как, выбрав добавить новый элемент мастера отчетов в проекте MVC просто вызвал мастер отчетов без мастера настройки источника данных:
Я попытался добавить классы бизнес-объектов в мой MVC проект, перекомпиляция его, а затем добавление отчета в проект MVC снова, но у меня все еще есть второй скриншот, поэтому кажется, что вы просто не получаете мастер настройки источника данных при добавлении в проекты MVC по какой-то причине.