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

この一般的なリストを にバインドするだけでよい場合は、GridViewこれを に変換してから、DataTableを にバインドDataTableGridViewます。匿名タイプをチェックしましたか?匿名型のジェネリック リストを作成し、それを自分のリストにバインドすることもできますGridView

幸運を!

于 2012-07-04T17:22:11.330 に答える