我在Visual Studio 2008中使用VB.net。
我正在尝试向数据绑定数据集添加验证。 到目前为止,我一直在通过处理dataSet的“ColumnChanging”事件进行简单的验证。 这几乎完全是通过双击dataSet中的dataColumn完成的:
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
这适用于不依赖于任何其他字段的字段的简单验证。
我想根据dataSet中其他列的值有条件地验证列。
例如,假设我有一个“驱动程序”表,用于存储驾驶员驾驶汽车的信息。
它将包括字段:
personID (Foreign Key to the "person" table)
vehicleTypeID (Foreign Key to the "vehicleType" table)
percentHighway
percentCity
wheelCount
我想验证一下:
1)percentHighway和percentCity加起来为100
- 如果没有,请为两列调用SetColumnError
2)wheelCount> 4当vehicleTypeID = 3时(意味着车辆是半卡车,而不是汽车或皮卡车)
- 如果没有,则为vehicleTypeID和wheelCount
设置setColumnError编辑:
好吧,正如@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")
实际上只会创建其中一个错误,而且我的数据绑定表单上只有一个控件会弹出!显示错误。只有正在更改的字段实际上会添加一条错误消息。
感谢您对此有任何帮助!
答案 0 :(得分:0)
如您所见,您的代码可以通过e.Row属性访问该行。您可以从该行获取所需的任何字段值,并使用它执行任何操作,包括在验证其他字段时使用它。