2009-07-23 21 views
2

DBへのクエリのDataTableからデータビューグリッドを作成しました。 Row_Leaveイベントをキャプチャしようとしている間に、正しく更新できるので、ブール値の列に最新の値をキャプチャできないようです。RowLeaveのDatagridviewがブール値に適切な値を割り当てていない

テキストフィールドを更新すると、基になるデータソースにアクセスすると、入力した最新の値が取得されます。ブール値にアクセスすると、前の値が取得されます。

if (allCorrect) 
{ 
    if (((DataRowView)dgView.Rows[e.RowIndex].DataBoundItem).IsNew) 
    {       
     this.InsertEntry((DataRow)((DataRowView)dgView.Rows[e.RowIndex].DataBoundItem).Row); 
    } 
    else 
    {       
     this.UpdateEntry((DataRow)((DataRowView)dgView.Rows[e.RowIndex].DataBoundItem).Row); 
    } 
} 

(根底にある行にアクセスするための非常に複雑な方法を、それは問題ではありませんので、ちょうどDGVのデータソースにアクセスするように動作します。)

私はこのような行にアクセスしています

アイデア

EDIT:問題を適切なイベント呼び出しに絞りました。 RowLeaveEndCellEditの前に呼び出され、さらにCellValueChangedと呼ばれるようです。したがって、行は決して(DBで更新される)ステータス更新を取得せず、実行しません。これらのイベントの順序を変更することはできますか(正常に動作するか)私はこれがOrcasで変更されるはずだったknown issueであることを発見しましたが、決してしませんでした。

答えて

3

よろしくお願いします。私は

で(イベントがまだ前述のバグが原因起こっなかったの)セルの変更を適用するにcommitEditを行う

 if(!(dgView.IsCurrentCellDirty)) 
     { 
      return; 
     } 

:それはで更新する必要があることを確認した後

 dgView.CommitEdit(0); 

更新された/挿入が行われると、その行は最新の値を取得します。

関連する問題