DataBind Generic“动态”类到GridView

时间:2012-07-04 16:07:47

标签: c# asp.net data-binding gridview

如何将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中提到的方法,但它仍然会抛出属性异常......

1 个答案:

答案 0 :(得分:0)

如果只需要将此通用列表绑定到GridView,我会将其转换为DataTable,然后将DataTable绑定到GridView。你检查过Anonymous Types了吗?您可以创建匿名类型的通用列表,然后将其绑定到GridView

祝你好运!