2017-12-05 11 views
0

私はに2つの列が設計されています。DataPropertyNameNameValueです。このDGVためDataGridView - 匿名オブジェクト用に空のDataSourceを強制します。

DataSourceのように見えるSomeObjectクラスのコレクションから来ている:

public class SomeObject 
{ 
    public string Name { get; set; } 
    public int Value { get; set; } 
    public int SomeOtherProp1 { get; set; } 
    public int SomeOtherProp2 { get; set; } 
} 

私だけNameValueプロパティがDataSourceで使用することがしたいので、私はこれら二つのプロパティを持つ匿名オブジェクトを作成します(someObjectCollectionされますSomeObject objectsのコレクション):

dgv.DataSource = someObjectCollection.Select(o => new { o.Name, o.Value }).ToArray(); 

それは大丈夫です - 私が必要とするもの空のコレクションをdgv.DataSourceに手動で割り当ててクリアすることです。

nullを割り当てることはできません。これは、DataGridViewコントロールがフォーム上で消えるためです。 また、DataSourceで使用されている2つのプロパティだけを持つvievモデルクラスを追加して作成することもありません。

他の方法はありますか?

+0

私は、データソースとして別のモデルを使用し、選択したモデルにデータを入力することを提案します。それから私はあなたの最後の文に気づいた。 IDはおそらくあなたの心配している 'dgv'を修正し、' data source'をヌルにしたり、空の 'object'にセットして行を消去しようと提案していますか? – thanatorr

+0

グリッドが消えてはいけません。最小限の例はありますか? – Crowcoder

答えて

1

空の結果を最後の有効な結果で設定できます。オブジェクトがnullの場合は試行できます。

+0

私はこのようにしました: 'dgv.DataSource = Enumerable.Empty ().Select(o => new {o.Name、o.Value})。ToArray();' – pitersmx

関連する問題