レスポンシブなDataGridViewテーブルを作成しようとしていますが、フィールドの値を更新するときにいくつかの問題があります。 フィールドを編集する場合は、フィールドを外にして、リフレッシュボタンを押してください。すべてが機能します。 私はCellValueChanged
のようなトリガーまたは `CellEndEdit」のいずれかを使用した場合、私はエラーを取得するC#値が変更されたときのデータセットのリフレッシュ
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll
Additional information: Operation is not valid because it results in a reentrant call to the SetCurrentCellAddressCore function.
private void Sync()
{
SqlCommandBuilder cmdr = new SqlCommandBuilder(prekes);
prekes.Update(d.Tables["Prekes"]);
Refresh();
}
private void Refresh()
{
dataGridView1.AutoGenerateColumns = false;
d = new DataSet();
prekes.Fill(d, "Prekes");
dataGridView1.DataSource = d.Tables[0];
}
dataGridView1.DataSource = d.Tables [0];エラーが発生する場所です。
クリックするとエラーが表示されますが、最初はうまく動作しません。それが起こったときに例外や何かを捕まえようとするべきですし、無視しなければなりませんか?または、CellEndEdit以外のトリガーを使用する必要がありますか?データセットでは動作しないのはなぜ
に次のコードスニペットを試してみてください?ここではDataTableで十分です。 DataTableにデータをロードし、データを変更し、最後にDataTableでGetChanges()を呼び出し、DataAdapterでUpdateを呼び出します。よろしくお願いします。 –
d = new DataSet()を使用してDataSetをクリアしているので、次のfill文はnullになり、エラーになります。 – jdweng