2012-01-05 12 views
4

私はWindowsフォームプロジェクトでDataGridViewと作業しています。 私は、編集モードでappensと似た何かを入手したいと思います。MS SQL Server Management StudioWinForms DataGridViewの動作はSQL Server Management Studioと似ています

私が説明しよう:私は私のデータグリッドにいくつか必須列をしましたし、私は行がこれらの列の値が有効である場合にのみ、グリッドに追加されたいです。 セルの値が有効でない場合は、メッセージボックスでユーザーに警告し、ESCを押すと、間違った行をリセットする必要があります。

私はCellValidatingRowValidatingイベントを試してみましたが、結果は満足できません。

私を助けることができますか?

UPDATE

私はRowValidatingをこのように実装:

private void myGrid_RowValidating(object sender, DataGridViewCellCancelEventArgs e) 
{ 
    if (string.IsNullOrEmpty(myGrid.Rows[e.RowIndex].Cells["MandatoryColumn"].FormattedValue.ToString())) 
    { 
     e.Cancel = true; 
     myGrid.Rows[e.RowIndex].Cells["MandatoryColumn"].ErrorText = "Mandatory"; 
     MessageBox.Show("Error message"); 
    } 
    else 
    { 
     myGrid.Rows[e.RowIndex].Cells["MandatoryColumn"].ErrorText = string.Empty; 
    } 
} 

は必須フィールドの値が有効でない場合は、メッセージボックスが表示し、セルが赤点在であるが、 ESC私はIndexOutOfRangeExceptionを取得します... 例外は、メッセージボックスを表示し、メソッドの動作をコメントしている場合にスローされますが(ただしnこの問題は、次のMSDNフォーラムに説明されて)...

+1

コードはどこにあり、なぜそれがあなたを満足させなかったのですか? – V4Vendetta

+0

@ V4Vendetta私はいくつかのコードを追加しました:) – davioooh

答えて

1

を私が達成したい行動をotの投稿: DataGridView + RowValidating = Index 4 does not have a value?

を基本的にはバグ(または少なくとも非常に予期しない動作であるように思われる)のようにDataGridViewは検証を処理します。MessageBox.Show()は、存在しなくなった行の検証を行います。

私はあなたのコードに次の変更が問題を修正することを認められなかっ:

private void myGrid_RowValidating(object sender, DataGridViewCellCancelEventArgs e) 
{ 
    // Note the check to see if the current row is dirty 
    if (string.IsNullOrEmpty(myGrid.Rows[e.RowIndex].Cells["MandatoryColumn"].FormattedValue.ToString()) && myGrid.IsCurrentRowDirty) 
    { 
     e.Cancel = true; 
     myGrid.Rows[e.RowIndex].Cells["MandatoryColumn"].ErrorText = "Mandatory"; 
     MessageBox.Show("Error message"); 
    } 
    else 
    { 
     myGrid.Rows[e.RowIndex].Cells["MandatoryColumn"].ErrorText = string.Empty; 
    } 
} 

変更が検証されている行が汚れていることを確認することです - あなたが行を脱出し、削除を押したときに、それはもはや汚れていますこれにより、誤って編集しようとすることを防ぎます。

+0

この貴重な提案をありがとう、それは完璧に動作します!どうもありがとう! – davioooh

関連する問題