2011-07-07 11 views
2

私はSLQ Server CEデータベーステーブルにバインドされたDataGridViewを持っています。C#のデータベースにバインドされたDataGridViewに行を追加します。

ボタンを押したときに、DataGridViewに新しい行を追加して、ユーザーが新しいデータをDataGridViewに挿入できるようにしたいと思います。

ユーザーがこの新しい行で入力を完了すると、データがバインドされたデータベースに保持されることも望みます。

私が試してみました:新しい行を挿入するために、ボタンクリックイベント内

dataGridView1.Rows.Add(); 

を、私は、次のエラーメッセージが表示されます。

行は、プログラムのDataGridViewのに追加することはできませんコントロールがデータバインドされているときの行コレクション

何か提案がありますか?

答えて

3

DataTableに、またはSQLとDataGridViewの間のインターフェイスに使用するオブジェクト(つまり、dataGridView1.DataSourceと等しいオブジェクト)に行を追加する必要があります。例については

:あなた自身を追加するコントロールしたくない場合は

// set DataSource 
dataGridView1.DataSource = dataTable1; 

// add row 
dataTable1.Rows.Add(); 

、あなたは@InBetweenが言ったことを行うと、trueにdataGridView1.AllowUserToAddRowsを設定することができます。

+0

DataGridView.AllowUserToAddRowsは既にtrueに設定されています。 DataGridViewとデータベース間のインターフェイスとしてテーブルアダプタを使用しますが、メソッドmyTableAdapter.Rows.Add();存在しません。DataViewGridでそのメソッドを使用すると、以前に投稿したエラーが表示されます。 – rfc1484

+0

あなたは2つの間のインターフェイスに使用しているコードを投稿できますか? –

+0

うまくいけば、 'this.animalsTableAdapter.Fill(this.animalsDataSet.Animals);' これは、データベーステーブルからのデータでDataGridViewを塗りつぶします。 – rfc1484

3

DataGridView.AllowUserToAddRowstrueに設定することで、ユーザーが行を追加できるようにすることができます。これにより、ユーザーは必要な数だけ新しい行を追加し、フィールドの値を編集することができます。

もう1つの方法は、DataGridView.DataSourceIListまたはIListSourceオブジェクト)に新しい「デフォルト」行を直接追加することです。これは、ユーザーに行を追加させるのと同じことですが、追加する行の量を制御できるという利点があります(たとえば、ユーザーは1行追加のみ許可する必要があります。その場合はAllowUserToAddRowsfalseに設定します) 。

+0

AllowUserToAddRowsは既にtrueに設定されています。実際には、ユーザーは新しい行を追加できます(最後の行が書き込まれると、最後に新しい空の行が表示されます)。しかし、私は "Add"ボタンをクリックすると、ユーザーが新しい行を追加できるようにしたい。 DataGridView.DataSourceに新しいデフォルトの行を直接追加する方法については、「追加」メソッドも同様のものでもありません。どうすればよいでしょうか? – rfc1484

+0

@ rfc1484:あなたのデータソースは何ですか? – InBetween

関連する問題