2011-07-01 22 views
5

我像往常一樣經歷了所有在MSDN上的漫步,它們毫無價值 - 非常有限。VS 2010 Report Viewer無法訪問嵌套集合,任何人?

如果我在我的類中創建一個內部對象,我可以顯示信息,但只要將其轉換爲對象列表(集合),我就會在顯示中看到#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(); 

在報告中顯示的人會毫無問題地顯示,因爲我將文本框添加到列表中,然後按ID對列表進行分組。當我嘗試顯示電話號碼時,我收到了#ERROR消息,並且對於我來說,我似乎無法找到顯示分配給某人的號碼列表的方式。

如果我將人員類別中的List<PhoneNumber>對象更改爲PhoneNumber我可以訪問它,但是當試圖顯示List<PhoneNumber>我不能。

我需要ale才能在類項目中顯示List<of objects>

+0

報表格式如何?它看起來像你只需要按名稱對報告進行分組,而數字構成了詳細信息。 –

+0

我遇到的問題是,我根本連電話號碼都連不上。當我創建對象時顯示的所有內容都是實際報表設計器中的名稱和地址。我使用的是VS2010,我不能爲我的生活獲得訪問電話號碼。我真的需要能夠訪問嵌套列表。任何想法? – nitefrog

+0

是什麼讓你認爲這會奏效?你有沒有見過一個例子?請注意,大多數報告服務數據源實際上是平坦的。 –

回答

2

嵌套集合必須顯示爲子報表,其中嵌套集合是單獨的數據源。您必須將事件LocalReport.SubreportProcessing綁定到處理程序,該處理程序將過濾並將數據源(PhoneNumbers)作爲單獨的報告數據源綁定到子報告。所提供的鏈接中的示例應該可以幫助您找到需要的地方。

+0

謝謝!完美工作!!!!! – nitefrog