2010-10-18 41 views
3

將報表查看器2010中的數據集添加到.rdlc報表時,自定義數據源在「數據源」下拉列表中的要求是什麼?Report Viewer 2010中設計時數據源的要求

從屏幕抓取中可以看出,出於某種原因,它列出了各種引用程序集的潛在來源,但我無法看到明顯的模式,因爲它爲什麼選擇這些。

alt text

的「GeneralDataSet」是有道理的,因爲這是一個強類型DataSet類,但我敢肯定,大多數人都沒有,但設計依然對話框列出這些。

我正在尋找我自己的自定義數據源,並希望它可以從這個列表中選擇。

回答

0

我認爲它會掃描您的項目文件,尋找返回列表<>等的方法。

因此,像:

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或者將其設置在後面的代碼中。

0

我注意到,如果數據源是作爲屬性而不是方法公開的,則不會顯示該數據集。

即這不能成爲一個可選擇的數據源。

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

但這將顯示爲數據源

public class FooData 
{ 
    public List<string> GetData(); 
} 
0

我剛和這個也有問題,

我班返航列出,但在數據源列表不顯示。

然後我添加了一個無參數的構造函數,它開始出現(之前沒有一個),我認爲這是報表查看器可以創建它的實例。

如:

public MyObject() 
{ 
} 
+0

如果你已經有一個構造函數確實需要參數 – 2011-02-09 04:05:24

0

我已經受夠了,從名單繼承自定義列表類似的問題。 如果您的系統允許您在不使用接口的情況下繼承,則可以解決此問題。我們沒有。

含有該類會出現在數據源下拉列表中的項目,本身似乎DataSet中的下拉列表中類:

public class AccountList : List<AccountData> 
{} 

這個類將不會顯示爲一個數據集,從而防止其項目出現的數據源(請注意AccountData前面的「I」):

public class AccountList : List<IAccountData> 
{} 

這是一種痛苦,因爲我們系統的其他方面的要求列表,以從一個接口沒有一個具體的類繼承。我不知道爲什麼它不起作用。