3

データソースにバインドされた datagridview があります。column[0] AgencyName は主キーであり、null にすることはできません。Bindingnavigator ( + ) プラス記号をクリックして新しい行を追加すると (2 回)、「列 (AgencyName) は null を許可しません」というエラーが発生します。このヌル例外を処理するには?

全体として、データソースにバインドされたデータグリッドビューで null と主キーの制約を処理する方法を教えてください。これを作成するために、データソースを winform にドラッグしただけであることに注意してください。

形

私はこのコードを持っています

    private void clientsDataGridView_Validating(object sender, CancelEventArgs e)
    {

        DataGridViewRow row = clientsDataGridView.CurrentRow as DataGridViewRow;

        if (row.Cells[0].Value == DBNull.Value)
        {

           clientsDataGridView.CancelEdit();                
           e.Cancel = true;

        }
     }

このコードでは、有効な値を指定しない限り、他のレコードをナビゲートできません。他の行に移動するたびに、新しい行 (無効なデータを含む) をキャンセルしたい

4

1 に答える 1

3

Control.Validatingイベントの説明 (DataGridView の継承元) から:

Validating イベント デリゲートで CancelEventArgs の Cancel プロパティが true に設定されている場合、通常は Validating イベントの後に発生するすべてのイベントが抑制されます。

したがって、e.Cancel = true を設定することにより、DataGridView に後続のすべてのイベント (RowLeave を含む) をキャンセルするように指示します。

Bindingsource を使用して Datagridview をバインドしていますか? もしそうなら、Datagridview.CancelEdit() の代わりに Bindingsource.CancelEdit() を呼び出してみます。

多分:

Dim bm As BindingManagerBase = clientsDatagridView.BindingContext(clientsDatagridView.DataSource, clientsDatagridView.DataMember)
bm.CancelCurrentEdit()
于 2012-06-18T16:30:04.180 に答える