2011-10-26 38 views
1

Winforms、vs2008を使用します。Datagridviewデータベースに直接編集行を書き込む

私はdatagridviewを、データテーブルを持つデータセットに添付されたbindingsouorceにバインドしました。

DataGridviewの行を編集できるようにしたいのですが、その行の編集が完了したら、ストアドプロシージャを介してデータをデータベーステーブルに直接書き込むことになります。 (これは、ストアドプロシージャの呼び出しを介して行う必要があることに注意してください)。

私の問題は、ユーザーが必要に応じて行内の1つ以上のセルの編集を完了したときに、確実にトリガーされるイベントを見つけることです。

行がこのグリッドに追加されることはありません。既存の行の編集または行の削除のみです。

DataGridview.rowleaveイベントを監視するか、 私はバインディングソースのPositionChangedまたは現在のアイテム変更イベントを使用できます。

これらのイベントはすべて、編集中の行から離れたときにのみ発生するという問題があります。 これは、グリッド上のデータ行が1行しかない、またはグリッド上の最後の行を編集しているときに大きな問題になります。これらのイベントのいずれも、あなたが列から離れるまで発射されません。

私は何ができますか? グリッド上の単一の行を処理したり、最後の行を編集したり、行を削除するにはどうすればよいですか。

アドバイスありがとうございます。

おかげ

答えて

1

あなたが救われるために、行の準備ができて考えるとき、あなたはそれが100%明確にしないでください。ある行が現在の行から離れたときに特定のイベントが発生するだけの問題ですが、他の行がいつ編集を終了すると思うか分かりません。

私が見ている2つのイベントは、DataGridViewのRowValidatedイベントとCellEndEditイベントです。

RowValidatedは、行の変更が検証されたときに発生します。通常、行は残されていますが、BindingSource PositionChangedなどの一部のイベントと異なり、グリッドがフォーカスを失った場合でもこのイベントが発生します。 (DataGridView Leaveイベントもありますが、それはおそらくまあまあです)。

行内のデータが変更されるたびにコミットしたい場合は、おそらくCellEndEditイベントが最適です。

+0

これはよい質問です。行から離れたときに行を保存する準備ができているときです。私は自分自身に尋ねると思った質問ではない – Spooky2010

関連する問題