Foxtable(狐表)用户栏目专家坐堂 → 筛选后的数据加载到容器ListView后双击提示错误


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

主题:筛选后的数据加载到容器ListView后双击提示错误

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


加好友 发短信
等级:小狐 帖子:388 积分:3212 威望:0 精华:0 注册:2017/4/2 19:33:00
筛选后的数据加载到容器ListView后双击提示错误  发帖心情 Post By:2022/6/16 15:04:00 [只看该作者]

请老师指正:在用ListView容器中显示筛选后的数据,双击选中行或单击修改按钮后提示错误,请问老师如何修改代码?按钮代码如下:

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

错误提示如下:
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.4.19.8
错误所在事件:窗口,随访个体化健康教育记录表三,btnEdit,Click
详细错误信息:
无法将类型为“Foxtable.Row”的对象强制转换为类型“Foxtable.DataRow”。

[此贴子已经被作者于2022/6/16 15:07:11编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/16 15:06:00 [只看该作者]

提示什么错误?

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


加好友 发短信
等级:小狐 帖子:388 积分:3212 威望:0 精华:0 注册:2017/4/2 19:33:00
  发帖心情 Post By:2022/6/16 15:08:00 [只看该作者]

错误提示如下:
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.4.19.8
错误所在事件:窗口,随访个体化健康教育记录表三,btnEdit,Click
详细错误信息:
无法将类型为“Foxtable.Row”的对象强制转换为类型“Foxtable.DataRow”。

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/16 15:12:00 [只看该作者]

ListView怎么生成的?

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


加好友 发短信
等级:小狐 帖子:388 积分:3212 威望:0 精华:0 注册:2017/4/2 19:33:00
  发帖心情 Post By:2022/6/16 15:19:00 [只看该作者]

用查询后生成的:
Dim nms() As String = {"xinmin","qsdate","jsdate"}
Dim sps() As String = {"'","#","#"}
Dim bjf() As String = {" = "," >= "," <= "}
Dim fds() As String = {"姓名","随访时间","随访时间"}
Dim filter As String
For i As Integer = 0 To nms.Length - 1    
    If e.Form.Controls(nms(i)).value IsNot Nothing Then
        If filter > "" Then
            filter =  filter & " and "
        End If
        filter = filter & fds(i) & bjf(i) & sps(i) & e.Form.Controls(nms(i)).value & sps(i)
    End If
Next
If filter > "" Then
    Tables("高血压糖尿病老年人的随访个体化健康教育活动记录表").filter = filter
End If
Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.Reset() '重置ListView,清除所有的分组?列?行和图片.

lvw.View = ViewMode.Details
lvw.Images.AddSmallImage("Man", "Man.ico") '添加代表男性的图标
lvw.Images.AddSmallImage("Woman", "Woman.ico") '添加代表女性的图标
Dim cls() As String = {"序号","姓名","性别","年龄","地址","电话","疾病诊断","档案编号","随访时间","随访编号","随访单位","随访图片"} '定义列名 
Dim wds() As String = {60,60,50,50,100,100,100,150,100,100,100,100} '定义列宽 
For i As Integer = 0 To  cls.Length - 1  '增加列 
    Dim c As WinForm.ListViewColumn = lvw.Columns.Add() 
    c.Text = cls(i) '指定列标题 
    c.Name = cls(i) '指定列名  
    c.Width = wds(i) '指定列宽 
Next 
For Each dr As Row In Tables("高血压糖尿病老年人的随访个体化健康教育活动记录表").Rows '从数据表中提取数据 
    Dim vr As  WinForm.ListViewRow =  lvw.Rows.Add() '增加一行
    For Each cl As String In cls '逐列取值
        vr(cl) = dr(cl)
    Next
    If dr("性别") = "男" Then '设置分组
        vr.ImageKey = "Man"
    Else
        vr.ImageKey = "Woman"
    End If
    vr.Tag= dr '将DataRow赋值给ListViewRow的Tag属性,将二者联系起来
Next

[此贴子已经被作者于2022/6/16 15:21:01编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/16 15:26:00 [只看该作者]

tag属性绑定的是row,所以使用的时候也必须使用row
For Each dr As Row In Tables("高血压糖尿病老年人的随访个体化健康教育活动记录表").Rows '从数据表中提取数据 
……
    vr.Tag= dr '将DataRow赋值给ListViewRow的Tag属性,将二者联系起来
Next

既然是row就没有必要再查一次了
Dim dr As Row = vr.tag '获取此行对应的DataRow
    Tables("高血压糖尿病老年人的随访个体化健康教育活动记录表").Position = dr.index
    Forms("慢病随访个体化窗口三").Open
    For Each cl As WinForm.ListViewColumn In lvw.Columns '逐列更新值
        vr(cl.Name) = dr(cl.Name)
    Next


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


加好友 发短信
等级:小狐 帖子:388 积分:3212 威望:0 精华:0 注册:2017/4/2 19:33:00
  发帖心情 Post By:2022/6/16 15:33:00 [只看该作者]

谢谢老师指正,修改后可以了。

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


加好友 发短信
等级:小狐 帖子:388 积分:3212 威望:0 精华:0 注册:2017/4/2 19:33:00
  发帖心情 Post By:2022/6/16 15:38:00 [只看该作者]

另外请教一下老师:能不能在容器加载所有datatables数据后再在容器中直接查询:用日期,姓名等进行查询。

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/6/16 15:58:00 [只看该作者]

容器指listview?listview没有查询功能,只能遍历所有行,逐行比较判断。

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


加好友 发短信
等级:小狐 帖子:388 积分:3212 威望:0 精华:0 注册:2017/4/2 19:33:00
  发帖心情 Post By:2022/6/16 16:15:00 [只看该作者]

好的,感谢老师指点。


 回到顶部