2011-07-06 67 views
4

我正在創建一個報告組件,該組件使用IEnumerable輸入並執行一些轉換和聚合並使用動態列數返回新的IEnumerable。我正在使用ADO.NET,因爲使用適當的列很容易創建DataTable將屬性添加到DataColumn

將轉換後的IEnumerable發送到報告可視化組件,該組件使用存儲在屬性中的信息很好地格式化結果。一旦應用屬性,就不需要刪除或更改屬性。

我的問題是這樣的: 是否有可能與DataColumn使得通過ADO.NET DataView包括這些屬性發出的PropertyDescriptorAttribute關聯?

後續問題: 如果在ADO.NET中這是不可能的,那麼我可以使用其他庫來實現這個功能嗎?

編輯:更新爲清楚起見 我希望能夠做這樣的事情:

DataTable dt = new DataTable(); 
DataColumn example = dt.Columns.Add("Test",typeof(double)); 

//This is the functionality I am looking for ideally 
example.AddAttribute(new CustomAttribute("Hello")); 

public class CustomAttribute : Attribute 
{ 
} 
+0

我一般用DataView.Table.Columns []得到這個信息,當我需要它...你是不知何故使用與支持表無關的DataView? – 2011-07-06 19:18:39

+0

@ebyrob不,我以標準方式使用DataView。我想能夠標記我的DataColumns屬性 – cordialgerm

+0

DataView.Table不是標準的嗎? (與ExtendedProperties結合會給你這個能力,如果你在創建和使用之間序列化你的DataView可能會出現唯一的問題,這就限制了你可以通過存儲獲得什麼樣的ExtendedProperties) – 2011-07-07 14:40:12

回答

7

參見DataColumns的ExtendedProperties財產。這使您可以將自定義數據添加到數據列。您必須自己編寫使用此自定義數據的代碼,但是 - 格式化(或者您打算使用的數據)不是自動的。

+1

謝謝 - m意識到ExtendedProperties,但我特別想讓PropertyDescriptor知道它們。 +1 for effort – cordialgerm

+0

請注意,文檔中聲明:「*當DataColumn被寫爲XML *時,不是String類型的屬性不會持久化」。所以看起來你可以存儲每一個,但只是字符串被堅持。 –

2

要回答我的問題:這是不可能注入的屬性到一個DataColumn,並讓它們出現在PropertyDescriptor的那個數據視圖的實現ITypedList的發射