这是一个狐友的例子,奖励为整数列,记功等级为字符型,为何还会出现类型错误?
If e.DataCol.Name = "记功等级" Then
If e.DataRow.IsNull("记功等级") Then
e.DataRow("奖励") = Nothing
Else
Dim s As String = e.DataRow("记功等级")
Dim s2 As String = "★"
Dim s3 As Integer = CInt(s)
e.DataRow("记功等级") = s2.PadLeft(s,"★")
e.DataRow("奖励") =s3 * 50
End If
End If
[此贴子已经被作者于2009-6-27 10:29:12编辑过]
IsNumeric,这个我还没用过,呵呵,谢谢贺老师!
不明白,为何不能直接转类型呢?
因为记功等级列有可能是字符,此时无法转换为数字。
用IsNumeric判断该列的内容是否是数字,如果是的,则转换。
以下是引用狐狸爸爸在2009-6-27 10:49:00的发言:
因为记功等级列有可能是字符,此时无法转换为数字。
用IsNumeric判断该列的内容是否是数字,如果是的,则转换。
明白了,又学了一招,呵呵
其实,不用IsNumeric,用帮助中介绍的知识,也可以的,甚至更简洁:
If e.DataCol.Name = "记功等级" Then
If e.DataRow.IsNull("记功等级") Then
e.DataRow("奖励") = Nothing
Else
Dim s As Integer
If Integer.TryParse(e.DataRow("记功等级"),s) Then
e.DataRow("记功等级") = "★".PadLeft(s,"★")
e.DataRow("奖励") =s * 50
End If
End If
End If
[此贴子已经被作者于2009-6-27 11:05:50编辑过]
以下是引用狐狸爸爸在2009-6-27 11:06:00的发言:其实,不用IsNumeric,用帮助中介绍的知识,也可以的,甚至更简洁:
If e.DataCol.Name = "记功等级" Then
If e.DataRow.IsNull("记功等级") Then
e.DataRow("奖励") = Nothing
Else
Dim s As Integer
If Integer.TryParse(e.DataRow("记功等级"),s) Then
e.DataRow("记功等级") = "★".PadLeft(s,"★")
e.DataRow("奖励") =s * 50
End If
End If
End If
[此贴子已经被作者于2009-6-27 11:05:50编辑过]
我觉得
IsNumeric更好理解,呵呵
哈哈,TryParse字面上就是尝试转换的意思啊,也好理解嘛。
还有待改进: 碰到
★★2 这样的修改输入时,要自动清空或给个提示重新输入!
此主题相关图片如下:未命名.jpg
怎样判断如果原来的内容包含★号?
[此贴子已经被作者于2009-6-27 14:33:58编辑过]