0

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

4

1 回答 1

0

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

祝你好运!

于 2012-07-04T17:22:11.330 回答