2012-04-27 14 views
0

メソッドがあり、グリッドに現在表示されている行が返されます。ランタイムにメンバーが作成されたクラス

public override List<object> GetData(int startIndex, int endIndex, string[] rowSortBy, bool[] rowAscSortOrder, 
        string[] rowGroupByOperations, string rowFilterExpression, ref int rowCount)   
    { 

      List<A> list = new List<A>(); 
      .. logic.. 

      return list;   
    } 

問題は今、グリッド列がダイナミックは、彼らはいくつかの条件に応じて変更を続けるということです。つまり、データメンバは動的なので、型指定されたクラスを使用することはできません。さらに、戻り値のタイプをList<object>GetDataという方法で変更することはできません。これは実際には第三者のコントロールによって使用されるためです。

を編集します。グリッド上で更新する必要があります。

私が考えることができるのは、リフレクションを使用してクラスを作成することだけです。

アイデア?

+0

おそらく辞書のようなものが適切でしょうか? – Sven

+0

戻り値の型は変更できません。リスト。辞書はIListを実装していません。 –

+0

しかし、リストの各オブジェクトを列の値を持つ辞書にすることはできますか? – Sven

答えて

1

あなたのリスト内のオブジェクトにICustomTypeDescriptorを実装する必要があるようです。

このようにプロパティが要求され、実行時に新しいプロパティで関連するデータを返すことができます。

http://wraithnath.blogspot.co.uk/2011/01/implementing-icustomtypedescriptor-for.html

http://msdn.microsoft.com/en-us/magazine/cc163816.aspx

これは少し複雑であるように、第1の時間を把握するために私にしばらく時間がかかりました。しかし、それは動作します!

+0

データをグリッド上で編集できるようになりますか? –

+0

@AseemGautam - はい、私はプロジェクトに実装して、グリッドは同じ動作します。プロパティを設定しようとすると、実装はオブジェクト内の正しい値を更新します。 – WraithNath

関連する問題