Foxtable(狐表)用户栏目专家坐堂 → [求助]无法将类型为“Foxtable.Row”的对象强制转换为类型“Foxtable.DataRow”


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

主题:[求助]无法将类型为“Foxtable.Row”的对象强制转换为类型“Foxtable.DataRow”

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


加好友 发短信
等级:三尾狐 帖子:633 积分:4016 威望:0 精华:0 注册:2015/1/27 9:34:00
[求助]无法将类型为“Foxtable.Row”的对象强制转换为类型“Foxtable.DataRow”  发帖心情 Post By:2015/4/17 16:51:00 [只看该作者]

什么意思?

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/4/17 16:51:00 [只看该作者]

你的代码不对. ROW 和DATAROW是不同的,不能互相赋值.

ROW里面有.DATAROW属性 解决不了具体请把代码发上来

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


加好友 发短信
等级:三尾狐 帖子:633 积分:4016 威望:0 精华:0 注册:2015/1/27 9:34:00
  发帖心情 Post By:2015/4/17 16:58:00 [只看该作者]

“查看”按钮,写在点击事件:

 

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
Dim vr As WinForm.ListViewRow = lvw.Current '获取ListView的当前行
If vr Is Nothing Then '如果不存在当前行,也就是内有选定任何一行
    Return
End If
Dim dr As DataRow = vr.tag '获取此行对应的DataRow
Dim ps As Integer = Tables("建议栏").FindRow(dr)
If ps >= 0 Then
    Tables("建议栏").Position = ps
    Forms("建议栏窗口").Open
    For Each cl As WinForm.ListViewColumn In lvw.Columns '逐列更新值
        vr(cl.Name) = dr(cl.Name)
    Next
End If

 

“显示”按钮代码:

 

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
Dim pg As Integer = e.Form.Controls("Label1").Text
Dim idx1 As Integer = (pg - 1)*10 '获取要显示的第一行
Dim idx2 As Integer = (pg*10)-1 '获取要显示的最末行
idx2 = Math.Min(DataTables("建议栏").dataRows.Count -1,idx2) 'idx2不能超过表的最大行数
lvw.Images.Clear() '清除之前的图片
lvw.Rows.Clear() '清除之前的行
For idx As Integer = idx1 To idx2
    Dim dr As Row = Tables("建议栏").Rows(idx) '根据行位置从数据表中取得对应的DataRow
    Dim vr As WinForm.ListViewRow = lvw.Rows.Add() '在ListView增加一行
    For Each cl As WinForm.ListViewColumn In lvw.Columns '逐列取值
        vr(cl.Name) = dr(cl.Name)
        vr.Tag= dr
    Next
Next

 

问题原由:我在另外一个帖子中提到新增行第一个显示,就按照bin的意思把原来教材中的代码替换为红色部分,新增条位于首行的功能实现了,但是其他的按钮,如:“查看”就出现了上述的问题。

[此贴子已经被作者于2015/4/17 16:59:08编辑过]

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


加好友 发短信
等级:三尾狐 帖子:633 积分:4016 威望:0 精华:0 注册:2015/1/27 9:34:00
  发帖心情 Post By:2015/4/17 17:03:00 [只看该作者]

急盼解决,

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/4/17 17:07:00 [只看该作者]

那就发查看按钮的代码, 错误不是在这里

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/4/17 17:08:00 [只看该作者]

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
Dim vr As WinForm.ListViewRow = lvw.Current '获取ListView的当前行
If vr Is Nothing Then '如果不存在当前行,也就是内有选定任何一行
    Return
End If
Dim dr As Row = vr.tag '获取此行对应的DataRow
Dim ps As Integer = dr.index
If ps >= 0 Then
    Tables("建议栏").Position = ps
    Forms("建议栏窗口").Open
    For Each cl As WinForm.ListViewColumn In lvw.Columns '逐列更新值
        vr(cl.Name) = dr(cl.Name)
    Next
End If

 回到顶部