0

WindowsフォームにDataGridViewがあります。このDataGridViewdgvに5つの列を定義しました。

ストアドプロシージャによって返されるデータテーブルは、このDataGridViewにバインドされています。

         DataTable table1 = returned by a stored procedure in C#;
         dgv.DataSource = table1;
         dgv.AutoGenerateColumns = false;
         dgv = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically; 

次に、別のボタンイベントで。DataGridViewをデータソースに再バインドしたい。

      DataTable dt1 = new DataTable();

それで

 DataRow dr = dt1.NewRow();
            dr["Interval"] = txtBox1.Text;
            dr["Count"] = txtBox2.Text;
            dr["AgeBegin"] = txtBox3.Text;
            dr["AgeEnd"] = txtBox4.Text;
            dr["Gender"] = txtBox5.Text;
            dt1.Rows.Add(dr);
            dgv.DataSource = dt1;

dt1には1行しかありません。これで、dgvは10列を表示します。最初の5列は空で、最後の5列には実際のデータがあります。

なんで?ありがとう。

4

2 に答える 2

1

に割り当てるAutoGenerateColumnsにに設定する必要がありますfalse DataSource

DataTable table1 = returned by a stored procedure in C#;
dgv.AutoGenerateColumns = false; // Before assigning the DataSource
dgv.DataSource = table1;
...
于 2012-06-12T18:30:44.337 に答える
0

データを配置する場所がない場合、Datagridviewsは自動的に行を追加します。あなたがそうしないように言わない限り、それはデザイナーのオプションではありません。

dgv.AutoGenerateColumns=false;

あなたがすでにこれを持っていることを気にしないでください。

問題を見つけるためだけに、再バインドする前にdgvをクリアする必要はありませんか?

datagridviewの列を事前に定義していますか?少なくとも欠陥を理解するまでは、空白のままにして、自動生成列を開始して許可することをお勧めします

于 2012-06-12T18:25:24.040 に答える