2016-04-07 15 views
1

には、コレクションがあり、2つのデータベースオブジェクトの間にLINQjoinが含まれています。結果の結合から特定の列のみを選択し、DataSourceプロパティとしてDataGridViewに入力します。私のDataGridViewのメタデータはvarオブジェクトの列に適合し、実行時にフォーマットを適用します。
コンテンツをクリアして新しいvarをフィードする必要があるときに問題が発生するのは、joinの結果です。私がDataGridView.DataSource = nullをコードすると、私はコンテンツをクリアするだけでなく、メタデータも破壊します。次回、私のvarコレクションにフィードすると、フォーマットがすべて乱されます。
質問は、データバインドされたDataGridViewコンテンツをクリアし、元のメタデータを保持する方法です。 私は空のフィードを与えることができましたvarコレクションは、私の結合オブジェクトの後にモデル化されましたが、コンテンツをクリアし、列構造を保持するネイティブDataGridViewメソッドがありますか?DataSourceをクリアした後にDataGridViewメタデータを保持する

答えて

1

を試してみてください。また、DataSourceをヌルに設定しても、列は保持されます。

例:以下の例で

、グリッドは、グリッドのプロパティ1とProperty2を示しています。また、データソースをnullに設定すると、グリッドは列を保持します。

var column1 = new DataGridViewTextBoxColumn(); 
column1.DataPropertyName = "Property1"; 
column1.HeaderText = "Column1"; 

var column2 = new DataGridViewTextBoxColumn(); 
column2.DataPropertyName = "Property2"; 
column2.HeaderText = "Column2"; 

this.dataGridView1.Columns.Add(column1); 
this.dataGridView1.Columns.Add(column2); 

this.dataGridView1.AutoGenerateColumns = false; 
this.dataGridView1.DataSource = Enumerable.Range(1, 10) 
              .Select(x => new 
              { 
               Property1 = x, 
               Property2 = x, 
               Property3 = x 
              }).ToList(); 
+1

これは私が探していた答えです!素晴らしい仕事をした。面白いのは、空のソースheheを利用してメソッドをクリアした直後に私はあなたの投稿を読んでいますが、今はコントロールをクリアする2つの方法がありますが、あなたのRAMは使いやすいです。 – ArtK

1

はあなたのDataGridViewのための列を定義し、falseAutoGenerateColumnsを設定した場合、あなたのグリッドは唯一あなたが定義された列を示し

dataGridView1.Rows.Clear(); 
関連する問題