Проверка на DataTable при добавлении новой строки - PullRequest
2 голосов
/ 21 февраля 2012

Когда новая строка была добавлена ​​программным способом с использованием автоматически сгенерированного метода в моей строго типизированной 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

1 Ответ

1 голос
/ 23 февраля 2012

Вы можете обработать событие таблицы RowChanging.Если DataRowChangeEventArgs.Action равно Add или одному из действий изменения ..., выполните проверку.

Прошло много времени с тех пор, как я это сделал, но я полагаю, что вы даже можете отменить редактирование, если нужно, позвонив CancelEdit на DataRowChangeEventArgs.Row.Проверьте документацию.См. Обработка событий DataTable (ADO.NET) в http://msdn.microsoft.com/en-us/library/w9y9a401.aspx.

. TableNewRow не поможет, поскольку он вызывается только при вызове NewRow.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...