以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请看列类型的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=3311) |
||||
-- 作者:yangming -- 发布时间:2009/6/27 10:28:00 -- 请看列类型的问题 这是一个狐友的例子,奖励为整数列,记功等级为字符型,为何还会出现类型错误? 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编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2009/6/27 10:34:00 -- If e.DataCol.Name = "记功等级" Then If e.DataRow.IsNull("记功等级") Then e.DataRow("奖励") = Nothing Else Dim s As String = e.DataRow("记功等级") If IsNumeric(s) Then Dim s2 As String = "★" Dim s3 As Integer = CInt(s) e.DataRow("记功等级") = s2.PadLeft(s,"★") e.DataRow("奖励") =s3 * 50 End If End If End If |
||||
-- 作者:yangming -- 发布时间:2009/6/27 10:44:00 -- IsNumeric,这个我还没用过,呵呵,谢谢贺老师! 不明白,为何不能直接转类型呢? |
||||
-- 作者:yangming -- 发布时间:2009/6/27 10:48:00 -- 我做好了,上传给大家看看,呵呵
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2009/6/27 10:49:00 -- 因为记功等级列有可能是字符,此时无法转换为数字。 用IsNumeric判断该列的内容是否是数字,如果是的,则转换。 |
||||
-- 作者:yangming -- 发布时间:2009/6/27 10:59:00 -- 以下是引用狐狸爸爸在2009-6-27 10:49:00的发言:
因为记功等级列有可能是字符,此时无法转换为数字。 用IsNumeric判断该列的内容是否是数字,如果是的,则转换。 明白了,又学了一招,呵呵 |
||||
-- 作者:狐狸爸爸 -- 发布时间: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编辑过]
|
||||
-- 作者:yangming -- 发布时间:2009/6/27 11:42:00 -- 以下是引用狐狸爸爸在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更好理解,呵呵
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2009/6/27 12:04:00 -- 哈哈,TryParse字面上就是尝试转换的意思啊,也好理解嘛。 |
||||
-- 作者:mr725 -- 发布时间:2009/6/27 14:31:00 -- 还有待改进: 碰到 ★★2 这样的修改输入时,要自动清空或给个提示重新输入! 此主题相关图片如下:未命名.jpg 怎样判断如果原来的内容包含★号? [此贴子已经被作者于2009-6-27 14:33:58编辑过]
|