Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
例如:当前选定行是第5行,如果这时你选定第X行或添加行,也就是说即将离开第5行,开始检验第五行中的第1列、第3列、第5列是否为空。如果为空,不能添加行不能选择其他行,如果不能空可以添加行也可以选择其他行。
在多位管理员及版主的帮助下,已经基本解决问题,现将代码粘贴如下:
BeforeAddDataRow事件:
If CurrentTable.Rows.Count <= 0 Then
Return
End If
Dim r As Row = CurrentTable.Current
If r.isNull("第一列") Orelse r.IsNull("第三列") OrElse r.IsNull("第五列") Then
e.Cancel = True
End If
BeforeSelChange事件:
If CurrentTable.Rows.Count <= 1 Then
Return
End If
Dim r As Row = CurrentTable.Current
If r.isNull("第一列") Orelse r.IsNull("第三列") OrElse r.IsNull("第五列") Then
If e.NewRange.RowSel <> e.OldRange.RowSel Then
e.Cancel = True
End If
End If
但还是有两个方面尚待完善,第一、添加行后不能直接选定新行,必须先选定原来行中的其他单元格后才允许选定新添加的行,这一点我把帮助中的例子试了一下,也存在这个问题,不知是什么原因。第二,删除最后的一行依然会出现错误代码。
请问楼上的朋友,代码应放在哪个事件的位置?我感觉此代码检测的并不是第5行的第1列第3列第5列,而是选择的其他行,似乎有些不妥,希望能够详细介绍一下
if currenttable.position = 4 andalso e.DataRow.isnull("第1列") then
e.Cancel = True
end if
放在positionchanged事件中吧
if currenttable.current.isnull("第1列") then '=当前行 |
是否要改成这样呢?
BeforeAddDataRow事件:
If CurrentTable.Rows.Count <= 0 Then
Return
End If
Dim r As Row = CurrentTable.Current
If r.isNull("第一列") Orelse r.IsNull("第三列") OrElse r.IsNull("第五列") Then
e.Cancel = True
End If
BeforeSelChange事件:
If CurrentTable.Rows.Count <= 1 Then
Return
End If
Dim r As Row = CurrentTable.Current
If r.isNull("第一列") Orelse r.IsNull("第三列") OrElse r.IsNull("第五列") Then
If e.NewRange.RowSel <> e.OldRange.RowSel Then
e.Cancel = True
End If
End If