У меня есть класс, который содержит несколько свойств включая то, которое является Списком <> дочерних объектов.
Простой пример:
public class LineItem
{
public string Name { get; set; }
public decimal Amount { get; set; }
}
public class Invoice
{
public string Name { get; set; }
public DateTime CreatedDate { get; set; }
public List LineItems { get; set; }
public Invoice() { ... }
}
Я пытаюсь связать этот объект (Счет в примере) к Кристаллическому Отчету (использующий конструктор отчетов кристалла VS2008) и в то время как я заставляю простые свойства (Имя, CreatedDate) обнаруживаться в Полевом Проводнике, дочерний набор не делает. Я попытался использовать ArrayList (как предложено (Как я могу использовать списки со строгим контролем типов в качестве источника данных для Crystal Reports), но это не работало.
После небольшого поиска и экспериментов мне не удалось привязать отчет к настраиваемому объекту, который содержал дочернюю коллекцию. Вместо использования объекта .Net я разработал отчет, используя схему XSD, и во время выполнения создал XML-файл и установил источник данных отчета о расходах на DataSet, который я построил с помощью метода .ReadXML.
var exportData = new XDocument(....);
var dataSet = new System.Data.DataSet();
dataSet.ReadXml(exportData.CreateReader());
var report = new ReportDocument();
report.Load("...");
report.SetDataSource(data);