1

並べ替えとフィルタリングを可能にするために、WinForms DataGridView (ElementDataGrid) の拡張バージョンを作成しようとしています。これは複数の開発者が使用するウィジェットになるため、SortableBindingList クラスを内部で非表示にし、SortableBindingList を作成するコントロールを持つ通常のリストだけをユーザーに渡します。

他の開発者が拡張できる Element という基本クラスを作成しましたが、列の DataPropertyName を Element にないプロパティに設定すると、その列には何も表示されません。例として、Element を継承する Comment クラスがあります。コメントの日付とコメントのテキストをデータグリッドに表示したいと考えています。どちらの列にもデータはありませんが、Element から継承されたプロパティを使用する列は正しく表示されます。

Element 基本クラスから継承するクラスのプロパティ値をグリッドに表示させる簡単な方法はありますか? または、プロパティに一般的なリストを持たせる方法はありますか?

更新:データソースをSortableBindingListに設定するために使用している方法は次のとおりです。先ほど言ったように、Element のプロパティは表示したいときにグリッドに入力されますが、Element から継承する Comment のプロパティはそうではありません。

public List<Element> DataElements
{
  set
  {
    bindingDataSource.Clear();

    SortableBindingList<Element> boundDataSource = new SortableBindingList<Element>();
    bindingDataSource.DataSource = boundDataSource;

    foreach (Element e in value)
    {
      bindingDataSource.Add(e);
    }

    this.DataSource = bindingDataSource;
  }
}
4

1 に答える 1

1

このSOの質問に対するMarcGravellの回答を見てください。彼が彼の答えで話しているように、データが均質であり(つまり、要素のリストにコメントとSomeOtherClassを混在させていない)、少なくとも1つの要素が含まれていると仮定します(そのため、リスト内のデータの実際のタイプ)、それはあなたの状況に役立つと思います。

于 2012-09-05T16:49:45.203 に答える