0

グリッドビューにバインドできるオブジェクトを C# で作成しようとしています。これを達成するための 3 つの目的があります。EntryTable、EntryRow、および EntryValue。EntryTable には EntryRows のリストが含まれ、EntryRow には EntryValues のリストが含まれます。Entry 値オブジェクトは、属性名と値で構成されます。

データ構造は次のとおりです。

public class EntryTable 
{
    private List<EntryRow> _lERTable = null;
    ...

public class EntryRow
{
    private List<EntryValue> _lEVRow = null;
    ...

public class EntryValue
{
    private string _sFieldName;
    private string _sValue;
    ...

デフォルトでは、バインド可能なオブジェクトは最上位の可視プロパティにのみバインドされることを認識しています。その結果、次のような EntryRow オブジェクト名のリストのみが表示されます。

-------------------------------------------
Norseman.CommandN.Data.CNStore.EntryRow    |
-------------------------------------------
Norseman.CommandN.Data.CNStore.EntryRow    |
------------------------------------------

私の最終的な目標は、入力された EntryTable をグリッドにバインドし、EntryTable オブジェクトにすべての EntryRow のすべての属性名を認識させ、データをグリッドとして表示できるようにすることです。問題は、すべての EntryRow が同じ数の EntryValues を持つわけではないということです。たとえば、従業員を保存していた場合、一部の従業員はマネージャー属性を持っていない可能性があります。

次のようにデータを処理したい:

First Name |    Last Name  |     Position             |     Manager
-----------------------------------------------------------------
Andrew     |    Milton     |    Software Developer    |     null
-----------------------------------------------------------------
Barry      |   Singleton   |    Web Developer         |     Marcus Manicotti

従来の System.Data.DataTable モデルにデータを入力することを検討しましたが、オーバーヘッドを避けるために独自のオブジェクトを実装したいと考えています。

この問題で何か助けていただければ幸いです。

4

1 に答える 1

1

WinFormsを使用している場合は、コレクションにITypedListを実装できます。WPFを使用している場合は、各アイテムでICustomTypeDescriptorを使用できます。

于 2011-03-17T19:47:14.530 に答える