sovantha
sovantha

Reputation: 259

Validation on DataTable when new row is added

When a new row was added programmatically using an auto generated method on my strongly typed DataTable, How can I fire my custom validation which validate the maxleng of my field?

My client (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);

My Data Access Layer (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

Upvotes: 2

Views: 2213

Answers (1)

AMissico
AMissico

Reputation: 21684

You can handle the table's RowChanging event. When the DataRowChangeEventArgs.Action is equal to Add or one of the change... actions do your validation.

It has been a long time since I did this, but I believe you can even cancel the edit if needed by calling CancelEdit on the DataRowChangeEventArgs.Row. Check the documentation. See Handling DataTable Events (ADO.NET) at http://msdn.microsoft.com/en-us/library/w9y9a401.aspx.

The TableNewRow will not help because it is only raised when NewRow is called.

Upvotes: 1

Related Questions