2
厳密に型指定されたDataTableで自動生成されたメソッドを使用してプログラムで新しい行が追加されたとき、自分のフィールドのmaxlengを検証するカスタム検証を、新しい行が追加されたときのDataTableの検証
私のクライアント(C#の)
DAL.ImportMarcDataSet.PublicationsRow newRow = importMarcDataSet.Publications.NewPublicationsRow();
newRow.CallNumber ="QA76.76.A65";
newRow.Title = "Programming WCF services";
newRow.ISBN = "0596526997";
importMarcDataSet.Publications.AddPublicationsRow(newRow);
私のデータアクセス層(VB)
Partial Class ImportMarcDataSet
Partial Class PublicationsDataTable
Private Sub CallNumberMaxLength(ByVal pRow As PublicationsRow)
If pRow.CallNumber.Length > 25 Then
pRow.SetColumnError("CallNumber", "The value entered is over the maximum length")
Else
pRow.SetColumnError("CallNumber", "")
End If
End Sub
'this event is ok when user made changes to the CallNumber column of the current row
Private Sub PublicationsDataTable_ColumnChanged(ByVal sender As Object, ByVal e As System.Data.DataColumnChangeEventArgs) Handles Me.ColumnChanged
If e.Column Is Me.CallNumberColumn Then
CallNumberMaxLength(e.Row)
End If
End Sub
End Class
End Class
ありがとうございました。 – sovantha
RowChangingイベントでCancelEdit()を呼び出すと例外がスローされます。[リンク](http://msdn.microsoft.com/en-us/library/system.data.datarow.canceledit.aspx)を参照してください。例外を強制的に取り消すには、RowChangingイベントで例外をスローする必要があります。他の誰かがこの回答に助けを求める場合に、私がそれを付け加えると思っただけです。 – Hagelt18