2012-02-21 5 views
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); 

Мой Доступ к данным 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 

ответ

1

Вы можете обрабатывать RowChanging событие таблицы. Когда DataRowChangeEventArgs.Action равен Add, или одно из действий ... изменит вашу валидацию.

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

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

+0

спасибо. – sovantha

+0

Вызов CancelEdit() в событии RowChanging вызовет исключение. См. [Link] (http://msdn.microsoft.com/en-us/library/system.data.datarow.canceledit.aspx). Исключение должно быть выбрано в событии RowChanging, чтобы заставить его отменить. Просто подумал, что добавлю, что если кто-нибудь еще зайдет за этим ответом за помощью. – Hagelt18

Смежные вопросы