2016-04-03 17 views
0

レスポンシブな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以外のトリガーを使用する必要がありますか?データセットでは動作しないのはなぜ

+0

に次のコードスニペットを試してみてください?ここではDataTableで十分です。 DataTableにデータをロードし、データを変更し、最後にDataTableでGetChanges()を呼び出し、DataAdapterでUpdateを呼び出します。よろしくお願いします。 –

+0

d = new DataSet()を使用してDataSetをクリアしているので、次のfill文はnullになり、エラーになります。 – jdweng

答えて

1

はあなたのリフレッシュ方法

prekes.Clear();//dataset.clear 
    dataAdaoter.Fill(prekes);//DataAdapter.Fill 
+1

動作しているように見えます。それが原因と思われるエラーです。私はそれが私のようになると答えたものとしてマークします。ありがとう! – Argus

+0

@Argus:うれしかった:) –

関連する問題