2

1 つの行がバインドされた有効な DataSource を持つ動的に作成された DataGridView があります。ただし、DataGridView で行数をカウントしているときに 0 が返されます。

dgResult.DataSource = resultDt; // a datatable containing one row
flowLayoutPanel.Controls.Add(dgResult); 
int rows = dgResult.Rows.Count; // returning 0 always!

誰かが私がここで間違っているかもしれない場所を教えてもらえますか?

4

2 に答える 2

5

問題を見つけました。選択されていないタブ付きページにグリッドを表示していました。グリッドが表示されていない限り、データバインディング中にrowaddedイベント(これは奇妙です!)を発生させません。データバインドを実行する前にタブページを選択したところ、行数が機能しました。

于 2012-06-27T15:10:23.263 に答える
2

代わりに次のコードを使用してください。

BindingSource bindingSource = new BindingSource();
bindingSource.DataSource = resultDt;

dgResult.DataSource = bindingSource;
flowLayoutPanel.Controls.Add(dgResult); 

var c = dgResult.Rows.Count;

バインディング ソースは、データをコントロールと同期する役割を果たします。テーブルをコントロールに直接割り当てようとするのではなく、それを使用したいと考えています。

于 2012-06-26T17:23:54.330 に答える