如何将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 :(得分:0)
如果只需要将此通用列表绑定到GridView
,我会将其转换为DataTable
,然后将DataTable
绑定到GridView
。你检查过Anonymous Types了吗?您可以创建匿名类型的通用列表,然后将其绑定到GridView
。