次のようなクラスに 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回答で言及されているアプローチを実装しましたが、それでもプロパティ例外がスローされます...