Проблемы с параметром RDLC Datasource для объекта - программирование
Подтвердить что ты не робот

Проблемы с параметром RDLC Datasource для объекта

Фон:

Мне было поручено преобразовать приложение базы данных Access в ASP.Net С# MVC. Это мое первое приложение MVC.

Есть 10 отчетов, которые нуждаются в преобразовании. Мы используем файлы RDLC и Reportviewer. Я использую Visual Studio 2010 со всеми последними исправлениями. Мы подключаемся к базе данных SQL Server, заполненной существующей базой данных Access, поэтому структура таблицы в значительной степени задана в камне, иначе нам придется попытаться преобразовать 10 лет данных.

Я выполнил все, кроме двух отчетов. Окончательные отчеты требуют большей обработки и не просто отображают данные из базы данных. Самый простой способ сделать это - создать объект С# и выполнить всю обработку на стороне сервера, а затем использовать 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 и double в качестве параметров. Либо все будет работать.

Вопрос

Есть ли в Visual Studio 2010 параметр, который я пропускаю, чтобы позволить конструктору RDLC видеть созданные мной объекты? Я ошибаюсь, даже думая, что это будет работать с классами, которые я определил?

Ответ

Все предложенные предложения были полезными, но в конечном итоге то, что заставило его работать для меня, было создание временного не-веб-проекта в том же решении и создание RDLC там. Когда я пошел добавлять набор данных, он показывает "Объекты" в качестве опции. Вы должны добавить ссылку на свой веб-проект, чтобы ваши объекты были видны, но затем вы можете выбрать тот, который вы хотите, и использовать его в RDLC. После этого вы можете просто перетащить RDLC файл в свой веб-проект, удалить временный проект, и вам хорошо идти. Просто помните, что вам нужно добавить источники данных вручную в код, и их нужно называть теми же, что указаны в RDLC.

4b9b3361

Ответ 1

  • Убедитесь, что классы находятся в том же пространстве имен, что и приложение.
  • Попробуйте создать приложение перед созданием отчета
  • Запустите мастер отчетов. В разделе DataSouce выберите имя своего веб-приложения.
  • В разделе Доступные наборы данных вы должны увидеть, что Visual Studio интерпретирует как ваш метод выбора. Если все хорошо, это должно быть TurnArounds.

Вам может потребоваться поместить файл класса в папку App_Data или App_Code, но я не уверен.

Это также может помочь.

http://msdn.microsoft.com/en-us/library/ms251692%28v=vs.100%29.aspx

Ответ 2

Задайте свои объекты под одним и тем же пространством имен, но в другом проекте, который затем ссылается на ваш проект пользовательского интерфейса.

Также попробуйте реализовать INotifyPropertyChanged.

Ответ 3

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

В Visual Studio есть несколько других мастеров, которые не работают с публичными участниками.

Приветствия, Маркус