Требования к источнику данных времени разработки в средстве просмотра отчетов 2010

Каковы требования к пользовательскому источнику данных, который должен быть указан в раскрывающемся списке «Источник данных» при добавлении набора данных в отчет .rdlc в средстве просмотра отчетов 2010?

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

альтернативный текст

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

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


person David Gardiner    schedule 18.10.2010    source источник


Ответы (4)


Я думаю, что он сканирует файл вашего проекта в поисках методов, которые возвращают Lists‹> и так далее.

Итак, что-то вроде:

public class Person
{
    public string name { get; set; }
    public int age { get; set; }
}

public class GetPeople
{
   public List<Person> GetPeopleList()
   {
      return null;
   }

   public IEnumerable<Person> GetPeopleIEnumerable()
   {
      return null;
   }

   public IQueryable<Person> GetPeopleIQueryable()
   {
      return null;
   }
}

Присутствуют все трое, так что выбирайте сами. (Код просто переработан, игнорируйте плохие имена/практики :))

Но когда вы используете ReportViewer, вам нужно будет вручную установить наборы данных. Выбор его внутри отчета из того, что я нашел, просто говорит ему, какие данные ожидать. Поэтому добавьте ObjectDataSource или просто установите его в коде позади.

person Phil    schedule 23.10.2010

Я заметил, что набор данных не отображается, если источник отображается как свойство, а не как метод.

т.е. это не может быть выбираемым источником данных.

public class FooData 
{
    public List<string> Data {get;set;}
}

но это будет отображаться как источник данных

public class FooData 
{
    public List<string> GetData();
}
person Jafin    schedule 28.01.2011

У меня тоже была проблема с этим,

мой класс возвращал списки, но не отображался в списке источников данных.

Затем я добавил конструктор без параметров, и он начал появляться (раньше его не было). Я предполагаю, что это сделано для того, чтобы средство просмотра отчетов могло создать его экземпляр.

eg:

public MyObject()
{
}
person WraithNath    schedule 08.02.2011
comment
Это имело бы смысл, если бы у вас уже был конструктор, требующий параметров. - person David Gardiner; 09.02.2011

У меня была аналогичная проблема с пользовательскими списками, которые наследуются от List. Вы можете обойти это, если ваша система позволит вам наследовать без использования интерфейсов. У нас нет.

Проект, содержащий этот класс, появится в раскрывающемся списке DataSource, а сам класс появится в раскрывающемся списке DataSet:

public class AccountList : List<AccountData>
{}

Этот класс НЕ будет отображаться как набор данных, что не позволяет его проекту отображаться как источник данных (обратите внимание на «I» перед AccountData):

public class AccountList : List<IAccountData>
{}

Это проблема, потому что другие аспекты нашей системы требуют, чтобы списки наследуются от интерфейса, а не от конкретного класса. Я не знаю, почему это не работает.

person Ric Bailey    schedule 17.04.2013