Foxtable(狐表)用户栏目专家坐堂 → 请看列类型的问题


  共有21482人关注过本帖树形打印复制链接

主题:请看列类型的问题

帅哥哟,离线,有人找我吗?
狐狸爸爸
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/27 10:49:00 [显示全部帖子]

因为记功等级列有可能是字符,此时无法转换为数字。
用IsNumeric判断该列的内容是否是数字,如果是的,则转换。

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/27 12:04:00 [显示全部帖子]

哈哈,TryParse字面上就是尝试转换的意思啊,也好理解嘛。

图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/27 22:01:00 [显示全部帖子]

以下是引用八婺在2009-6-27 21:05:00的发言:
4、7楼代码都有问题的,假如在记功等级列输入0就会出错。
[此贴子已经被作者于2009-6-27 21:07:28编辑过]


再来一个:

If e.DataCol.Name = "记功等级" Then
    If e.DataRow.IsNull("记功等级") Then
        e.DataRow("奖励") = Nothing
    Else
        Dim s As Integer
        If Integer.TryParse(e.DataRow("记功等级"),s) AndAlso s > 0 Then
            e.DataRow("记功等级") = "★".PadLeft(s,"★")
            e.DataRow("奖励") =s * 50
        End If
    End If
End If

[此贴子已经被作者于2009-6-27 22:00:49编辑过]

 回到顶部