【发布时间】:2014-04-18 02:35:09
【问题描述】:
我在 Visual Studio 2008 的 VB.net 中工作。
我正在尝试向数据绑定数据集添加验证。 到目前为止,我一直在通过处理数据集的“ColumnChanging”事件进行简单的验证。 这几乎完全由我通过双击数据集中的数据列完成:
If (e.Column.ColumnName = Me.nameColumn.ColumnName) Then
If e.ProposedValue.ToString.Trim = "" Then
e.Row.SetColumnError(e.Column, "You must provide a name for this person.")
Else
e.Row.SetColumnError(e.Column, "")
End If
End If
这适用于对不依赖于任何其他字段的字段进行简单验证。
我想根据数据集中其他列的值有条件地验证列。
例如,假设我有一个“司机”表,其中存储有关司机如何驾驶汽车的信息。
它将包括字段:
personID (Foreign Key to the "person" table)
vehicleTypeID (Foreign Key to the "vehicleType" table)
percentHighway
percentCity
wheelCount
我想验证一下:
1) percentHighway 和 percentCity 加起来是 100
-如果没有,则为两列调用 SetColumnError
2) 当 vehicleTypeID = 3 时 wheelCount > 4(意味着车辆是半卡车,而不是轿车或皮卡车)
-如果没有,则为vehicleTypeID 和wheelCount 设置ColumnError
编辑:
好的,正如@jmcilhinney 在下面指出的,我可以使用 e.Row 来访问行数据。然后从那里,我可以看到其他列:
e.Row.Item("columnName")
现在我希望一次将错误添加到多个列。我可以说:
e.Row.SetColumnError("columnName", "Error Message")
效果很好,但仅适用于当前正在更改的列。
如果我说:
e.Row.SetColumnError("columnName1", "Error Message 1")
e.Row.SetColumnError("columnName2", "Error Message 2")
实际上只会创建其中一个错误,并且我的数据绑定表单上只有一个控件会弹出一个!显示错误。只有正在更改的字段实际上会添加一条错误消息。
感谢您对此的任何帮助!
【问题讨论】:
标签: vb.net validation datatable multiple-columns