首先,
我们点击表属性,看看涉及保存的事件有哪些?
其次,
看看哪些属性适用于我们的系统?
此主题相关图片如下:444.png
我们看到这里只见到有一个属性,beforesavedatarow
BeforeSaveDataRow
在保存某一数据行之前执行,可以在此对数据进行最终的验证。
e参数属性:
DataTable: 返回正在保存的数据表。
DataRow: 返回正在保存的数据行。
Cancel: 逻辑型,设为True,取消正在进行的保存。
而我们需要些什么呢?
需求:
<!--[if !supportLists]-->1.
<!--[endif]-->保存的时候,需要部分列字段不能为空,否则就不能保存;
<!--[if !supportLists]-->2.
<!--[endif]-->被编辑的行如果状态不是保存状态,那么不能离开下一行;
<!--[if !supportLists]-->3.
<!--[endif]-->如果离开,那么对该行数据的操作就会被撤销;
我们一个个的来解决!
第一个问题:部分列字段不能为空,否则就不能保存;
假设,会员姓名和手机号码列不能为空,那么我们可以这样做
If e.DataRow("会员姓名") = "" Then
'假设-正在保存的数据行-的列为空值
MessageBox.Show("会员姓名必须输入") '那么弹出一个消息
Else
e.Cancel = True
'逻辑型,设为True,取消正在进行的保存.
End If
目前阶段,我们还不会用更复杂的语句,先用这些吧
接下来,我们设置手机号码不能为空
If e.DataRow("手机号码") = "" Then
'假设-正在保存的数据行-的列为空值
MessageBox.Show("手机号码必须输入")
'那么弹出一个消息
Else
e.Cancel = True
'逻辑型,设为True,取消正在进行的保存.
End If
这样做了之后,是不是已经完成了这样的目标呢?
第二个问题:被编辑的行如果状态不是保存状态,那么不能离开下一行;
这个时候,我们关注的是:数据行的状态
在帮助中搜索关键词“行的状态”
我们来模拟一下,如果该行状态没有发生变化,那么就新增一行。
If e.DataRow.RowState =DataRowState.Unchanged Then '如果该行的状态为
unchanged
Return '终止执行下面的程序
Else
Dim Result As DialogResult
'否则,定义一个对话框
Result = MessageBox.Show("你是否需要增加一行?",
"提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Result = DialogResult.no Then
Return
Else
e.DataTable.AddNew()
End If
End If
第三个问题:如果离开,那么对该行数据的操作就会被撤销;
上一节中,我们接触到对话框,当点击确定的时候就增加,否则就撤销
帮助文件中搜索关键词“撤销”
Reject
撤销自打开文件或最近一次保存以来,对该行做出的修改。
如果是新增加的行,执行此方法,会删除行。
这样的描述很清楚。
我们只需要加一条
e.datarow.reject()
即可完成任务!
关于保存相关的事件,是不是很简单?
你也可以操作一下,遇到不熟悉的,就翻翻帮助
此主题相关图片如下:image003.gif
知识链接:
在帮助文件中搜索“保存”,你得到哪些结果呢?是不是有您需要的?
更为复杂的不能为空的操作,先给出思路,先做一下,不懂再发问吧
<!--[if !supportLists]-->1)
<!--[endif]-->定义多个不能为空的字段集
<!--[if !supportLists]-->2)
<!--[endif]-->定义一个数据行
<!--[if !supportLists]-->3)
<!--[endif]-->在保存的时候遍历这个数据行,如果某列为空,就提示