需求:如果"日期"为空,列一,列二,列三不可编辑,否则,不为空,为编辑?如果列多比10多列,如何更简洁写?
''Dim dr As DataRow = e.DataRow
''Select Case e.DataCol.Name
'' Case "日期"
'' If dr.IsNull("日期") Then
'' dr("列一").Cancel = True
'' dr(列二").Cancel = True
'' dr("列三").Cancel = True
'' Else
'' dr("列一").Cancel = False
'' dr("列二").Cancel = False
'' dr("列三").Cancel = False
'' End If
''End Select
编辑权限控制到PrepareEdit事件处理:
http://www.foxtable.com/webhelp/topics/0605.htm
列名如果有规律,比如都是【列】字开头,判断控制【列】字开头的列即可。
列名如果没有规律,只能是把所有列名都一一列出来判断
If e.Col.Name = "日期" AndAlso e.Row.IsNull("日期") = False Then
e.Row("列一").Cancel = True
e.Row("列二").Cancel = True
e.Row("列三").Cancel = True
End If
执行后,无法实现需求
需求:如果"日期"为空,列一,列二,列三不可编辑,否则,不为空,为编辑? |
If Tables("窗口_Table2").Current.IsNull("日期") Then
e.Cancel = True,执行后,是整行,需求:如果"日期"为空,列一,列二,列三不可编辑,否则,不为空,为编辑?看帮助还不太理解,请帮处理,谢谢
' e.Row("期初_数量").Cancel = True
' e.Row("入库_数量").Cancel = True
' e.Row("出库_数量").Cancel = True
End If
让您看IsNull的用法,不是让你照抄IsNull的全部代码。看帮助要学会理解帮助讲解的知识点的处理问题的逻辑
If e.Col.Name = "列一" orelse e.Col.Name = "列2" orelse e.Col.Name = "列3" if e.Row.IsNull("日期") Then e.Cancel = True End If End If |
PrepareEdit事件:
Select Case e.Col.Name
Case "第一列", "第二列", "第三列" '要设置的列名
If e.Row("日期") Is Nothing Then
e.Cancel = True
End If
End Select
回7楼,日期型要使用【= Nothing】判断,不使用【Is Nothing】,具体请帮助搜索“空值”。建议还是使用isnull