Я прошел через все обходы MSDN, как обычно, они бесполезны - крайне ограничены.
Если я сделаю внутренний объект в своем классе отдельным классом, я смогу отобразить информацию, но как только я преобразую ее в список объектов (коллекцию), я получу на экране ошибку #Error.
Вот обновленный пример.
Например, у меня есть объект Person, который может иметь один или несколько телефонных номеров (список номеров), и я не могу найти способ доступа к телефонным номерам.
[Serializable]
public class Person
{
private readonly List<PhoneNumber> _numbers = new List<PhoneNumber>();
public Person()
{
}
public Person(int id, string name, string address, decimal salary)
{
Id = id;
Name = name;
Address = address;
Salary = salary;
}
public void AddNumber(PhoneNumber number)
{
_numbers.Add(number);
}
public int Id { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public List<PhoneNumber> PhoneNumbers { get { return _numbers; } }
}
[Serializable]
public class PhoneNumber
{
public PhoneNumber()
{
}
public PhoneNumber(int id, string areaCode, string phone)
{
AreaCode = areaCode;
Id = id;
Phone = phone;
}
public string AreaCode { get; set; }
public string Phone { get; set; }
public int Id { get; set; }
}
Затем я заполняю коллекции.
var persons = new List<Person>();
var t = new Person(1, "Mike", "5150 Nuts", 125);
t.AddNumber(new PhoneNumber(1, "425", "455"));
t.AddNumber(new PhoneNumber(1, "425", "450"));
persons.Add(t);
t = new Person(2, "Tom", "1055 MS HAS NO DOCUMENTATION AS USUAL!", 1245);
t.AddNumber(new PhoneNumber(2, "TYPICAL", "OF-THEM"));
t.AddNumber(new PhoneNumber(2, "ANY", "ONE???"));
persons.Add(t);
Затем я назначаю все отчету.
reportViewer1.ProcessingMode = ProcessingMode.Local;
reportViewer1.LocalReport.ReportPath = "..\\..\\Report1.rdlc";
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Person",persons));
reportViewer1.RefreshReport();
В отчете отображаются люди, которые будут отображаться без проблем, когда я добавляю текстовые поля в список, а затем группирую список по идентификатору. Когда я пытаюсь отобразить номера телефонов, я получаю сообщение #ERROR, и, судя по всему, не могу найти способ отобразить список номеров, которые назначены человеку.
Если я изменю объект с List<PhoneNumber>
в классе персонажа на PhoneNumber
, я смогу получить к нему доступ, но при попытке отобразить List<PhoneNumber>
я не смогу.
Мне нужно быть элем, чтобы отобразить List<of objects>
в пределах предмета класса.