2012-07-04 46 views
0

如何將GridView綁定到像下面這樣的類?DataBind通用「動態」類到GridView

public class GenericEntity 
{ 
    private readonly Dictionary<string, object> properties = new Dictionary<string, object>(); 
    public object this[string propertyName] 
    { 
     get 
     { 
      if (properties.ContainsKey(propertyName)) 
       return properties[propertyName]; 
      else 
       return null; 
     } 
     set 
     { 
      if (value == null) 
       properties.Remove(propertyName); 
      else 
       properties[propertyName] = value; 
     } 
    } 
} 

這個類可以有任意數量的屬性,也沒有辦法知道任何人在編譯的時候,只在運行時,這是因爲屬性直接映射到從BD的結果集的列。

如何將此GenericEntity類的列表綁定到GridView?我嘗試以下,但我得到的例外「類不包含名稱的屬性......」

var newColumn = new BoundField(); 
newColumn.HeaderText = resultsetDescription.FieldDisplayName; 
newColumn.DataField = resultsetDescription.FieldName; 
myGridView.Columns.Add(newColumn); 

myGridView.DataSource = GetListOfGenericEntities(args); 
myGridView.DataBind(); 

編輯:

我已經實現這個SO answer但它仍然提到的方法拋出屬性異常...

回答

0

如果您只需要將此通用列表綁定到GridView,我會將其轉換爲DataTable,然後將DataTable綁定到GridView。你有沒有檢查Anonymous Types?您可以創建匿名類型的通用列表,然後將其綁定到您的GridView

祝你好運!